0

文字列「öçÇşŞükrÜ」を他の文字セットにデコードしています。

興味深い問題に遭遇したので、それを解決する方法を学びたいと思っています。

>>> "öçÇşŞükrÜ".decode("utf-8")
u'\xf6\xe7\xc7\u015f\u015e\xfckr\xdc'
>>> "öçÇşŞükrÜ".decode("utf-8").encode("utf-8")
'\xc3\xb6\xc3\xa7\xc3\x87\xc5\x9f\xc5\x9e\xc3\xbckr\xc3\x9c'


>>> import chardet
>>> chardet.detect('\xc3\xb6\xc3\xa7\xc3\x87\xc5\x9f\xc5\x9e\xc3\xbckr\xc3\x9c')
{'confidence': 0.99, 'encoding': 'utf-8'}
>>> chardet.detect("öçÇşŞükrÜ")
{'confidence': 0.99, 'encoding': 'utf-8'}

私が理解できず、見つけることができないのは、元の文字列「öçÇşŞükrÜ」をPythonでデコードおよびエンコードするプロセスで取得する方法です?

4

1 に答える 1

1

文字列「öçÇşŞükrÜ」を他の文字セットにデコードしています。

いいえ、エンコードされた文字列をメモリ内の Unicode 表現にデコードしています。耳障りに聞こえる場合は申し訳ありませんが、何かがうまくいくまで手探りではなく、Unicode の基本を正しく理解することが非常に重要です編集:コメントのリソース、https://www.youtube.com/watch?v=sgHbC6udIqcおよびhttp://www.joelonsoftware.com/articles/Unicode.html不可欠です。それらを読んで見てください。知っておく必要があるのは、ディスクや端末には Unicode がないということです。1 つまたは別のエンコーディングを使用して、すべてがエンコードされます。

Linux を使用している場合は、ラッキーです。(私たち Windows 開発者... まあ、世界の痛みなど) あなたのコンソールはおそらく UTF-8 です。

"öçÇşŞükrÜ".decode("UTF-8")

おそらく意味があるでしょう。

試しましたか

print "öçÇşŞükrÜ".decode("UTF-8").encode("UTF-8")

(つまり、print適用済み)?その後、オリジナルöçÇşŞükrÜを取り戻す必要があります。

于 2012-11-16T13:16:34.510 に答える