2016-05-13 15 views
0

私は、(Unicode表現を含んでいるので)通常のASCII文字列としてエンコードされるはずのUnicode文字列(APIクエリから)を得ました。エンコードされる文字を実際に変更せずにエンコードを変更するにはどうすればよいですか?ウィットにPython:望ましくないUnicode型

:私は\xc2\xbaを実現

string = '165\xc2\xba F' # What I want 
print(string) 

my_string = u'165\xc2\xba F' # What I have 
print(my_string) 

PSは序数ではなく度記号(\xc2\xb0)のために実際にあるが、それは私が得たものです。

答えて

2

"unicode"でないものは、必要な文字列のUTF-8エンコーディングのバイトシーケンスです。

あなたは、透過的にそれらを(あなたのユニコード文字列から)バイト文字列にあなたのバイトシーケンスを輸送し、 する「Latin-1の」コーデックを使用してテキストを取得UTF-8から、通常はそれをデコードすることができます

ラテン-1コーデックが、この場合には特別で、その作品はなぜ
In[]: u'165\xc2\xba F'.encode("latin1").decode("utf-8") 
Out[]: u'165º F' 

は、ここから2番目の段落に記述されている:https://docs.python.org/3/library/codecs.html#encodings-and-unicode

は、あなたが知っているthis nice article on Unicodeを読み取るために、それは有用であろう余裕がいくつかの分を持っている場合にはコーデックとは何か、ユニコードのテキストはどういう意味ですか?

+0

'u'165 \ xba F''はあなたが入力した結果です。私がそれを印刷するときだけ、私は望みの出力を持っています。それはすべて非常に混乱しています。 – bongbang

+0

私は適切な用語を使用していないかもしれませんが、 'u'は必ず文字列を" unicode "として指定しません。つまり、それは 'type(my_string)'が言うことです。 – bongbang

+0

あなたの答えに感謝して、私は 'my_string.encode( 'latin1')'が私に欲しいものを与えてくれることを発見しました。とても有難い! – bongbang

関連する問題