upper() や capitalize() などの組み込み関数を使用して、UTF-8 文字列を変換したいと考えています。
例えば:
>>> mystring = "işğüı"
>>> print mystring.upper()
Işğüı # should be İŞĞÜI instead.
どうすればこれを修正できますか?
upper() や capitalize() などの組み込み関数を使用して、UTF-8 文字列を変換したいと考えています。
例えば:
>>> mystring = "işğüı"
>>> print mystring.upper()
Işğüı # should be İŞĞÜI instead.
どうすればこれを修正できますか?
エンコードされた文字列に対してアクションを実行しないでください。最初にデコードしunicode
ます。
>>> mystring = "işğüı"
>>> print mystring.decode('utf-8').upper()
IŞĞÜI
実際には、一般的な戦略として、テキストがメモリに格納されたら常に Unicode として保持するのが最善です。入力時に特定のエンコーディング要件がある場合は、入力時にデコードし、出力する必要があるときに正確にエンコードします。および/または入力時間。
この一般的な戦略を採用することを選択しなくても (そうすべきです!)、必要なタスクを実行するための唯一の適切な方法は、デコード、処理、再度エンコードすることです。エンコードされたフォームで作業することは決してありません。すなわち:
mystring = "işğüı"
print mystring.decode('utf-8').upper().encode('utf-8')
割り当て時および出力目的でエンコードされた文字列に制限されていると仮定します。(出力制約は残念ながら現実的ですが、代入制約は現実的ではありません -- を実行しmystring = u"işğüı"
、最初からユニコードにし、少なくとも.decode
呼び出しを節約してください!-)