0

Pythonでこれを行う場合:

>>> name = "âțâîâ"
>>> name
'\xc3\xa2\xc8\x9b\xc3\xa2\xc3\xae\xc3\xa2'
>>> len(name)
10
>>> u = name.decode('utf-8')
>>> len (u)
5
>>>

何も指定しない場合のPythonのデフォルトのエンコーディングは何ですか?

4

2 に答える 2

2

Python 文字列リテラルを指定しており、それらのエンコーディングはエディター (または Python インタープリターの場合は端末) のデフォルト設定によって決定されます。Python はこれについて発言権を持っていませんでした。

デフォルトでは、python 2 はソース コードを ASCII として解釈しようとします。Python 3 では、これは UTF-8 に切り替えられました。

Unicode と入力および出力エンコーディングの違いをさらに理解するには、 Python Unicode HOWTOをお読みください。Joel Spolksy のUnicode に関する記事もぜひお読みください。

于 2012-09-12T08:33:37.600 に答える
1

おそらく Python 2 を使用しています (そうでない場合、この回答は適切ではありません)。

何が起こるかは次のとおりです。

>>> name = "âțâîâ"

nameターミナル resp のエンコーディングによって内容が決定される (バイト) 文字列に割り当てます。あなたのテキストエディタの。あなたの場合、これは明らかにUTF8です。

これらのバイトは

>>> name
'\xc3\xa2\xc8\x9b\xc3\xa2\xc3\xae\xc3\xa2'

でデコードした場合のみ

>>> u = name.decode('utf-8')

ユニコード文字列を取得します。ここでそのエンコーディングを指定します。

より簡単で確実な方法は、直接行うことです

u = u"âțâîâ"

その後、必要なエンコーディングに従ってバイトを抽出します。

name = u.encode("utf-8")
于 2012-09-12T08:42:41.523 に答える