Python 3.3 で次のコードを検討してください。
import unicodedata
foo = 'some unicode string that contains characters decomposable to Unicode 3.2.0 NFD'
bar = unicodedata.ucd_3_2_0.normalize('NFD', foo)
bla = unicodedata.normalize('NFC', bar)
最後のステートメントは動作することが保証されていますか? より良い質問は次のとおりだと思います: Unicode 3.2.0 に、Unicode 6.1.0 (Python 3.3 のデフォルト) でカバーされていない NFD シーケンスはありますか?
バイトレベルでbla
は、 とまったく同じではない可能性があることを認識していますfoo
。これは、マークの結合が最初から「非標準」の順序であった可能性があるためですfoo
(たとえば、 \ u0071 \u0323ではなく \u0071 \u0307 \u0323 ) \u0307 .破損/スクランブルされているように見えるのではなく、エンド ユーザーと同じようにbla
見える限り問題ないと思います。foo