あなたはこのようなあなたのコードを修正することができます
header = str(self.new_header).decode('string-escape').decode("utf-8")
self.textEdit_3.append(header + "\n")
あなたはsetdefaultencoding
ラインを必要としません。
Expanantion:
元の値は、バイト文字列を含むリストである:
>>> value = ['matchkey', 'a', 'b', 'd', '안녕']
>>> value
['matchkey', 'a', 'b', 'd', '\xec\x95\x88\xeb\x85\x95']
あなたはstr
でこのリストを変換する場合、それはすべてのリスト要素にrepr
を使用します。 :
>>> strvalue = str(value)
>>> strvalue
"['matchkey', 'a', 'b', 'd', '\\xec\\x95\\x88\\xeb\\x85\\x95']"
repr
部品は次のようにデコードすることができます。
>>> strvalue = strvalue.decode('string-escape')
>>> strvalue
"['matchkey', 'a', 'b', 'd', '\xec\x95\x88\xeb\x85\x95']"
、これは次のようにUnicodeにデコードすることができます:読書の問題について
:
>>> univalue = strvalue.decode('utf-8')
>>> univalue
u"['matchkey', 'a', 'b', 'd', '\uc548\ub155']"
>>> print univalue
['matchkey', 'a', 'b', 'd', '안녕']
PS utf-8 bomのファイルをテストしてください。
# -*- coding: utf-8 -*-
import os, codecs, tempfile
text = u'a,b,d,안녕'
data = text.encode('utf-8-sig')
print 'text:', repr(text), len(text)
print 'data:', repr(data), len(data)
f, path = tempfile.mkstemp()
print 'write:', os.write(f, data)
os.close(f)
with codecs.open(path, 'r', encoding='utf-8-sig') as f:
string = f.read()
print 'read:', repr(string), len(string), string == text
コメントは議論の対象外です。この会話は[チャットに移動]されています(http://chat.stackoverflow.com/rooms/160658/discussion-on-answer-by-ekhumoro-string-value-decode-utf-8)。 –