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のデフォルトのエンコーディングは何ですか?
Python 文字列リテラルを指定しており、それらのエンコーディングはエディター (または Python インタープリターの場合は端末) のデフォルト設定によって決定されます。Python はこれについて発言権を持っていませんでした。
デフォルトでは、python 2 はソース コードを ASCII として解釈しようとします。Python 3 では、これは UTF-8 に切り替えられました。
Unicode と入力および出力エンコーディングの違いをさらに理解するには、 Python Unicode HOWTOをお読みください。Joel Spolksy のUnicode に関する記事もぜひお読みください。
おそらく 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")