python print存储在unicode字符串

时间:2017-08-03 12:49:36

标签: python unicode encoding utf-8

我正在读取从某个库中检索到的pickle文件。在 unicode 字符串中存储了很多utf-8字符。例如:

u'\xc4\x91' #đ
u'\xc3\xad' #í
u'\xc3\u017d' #�\u017d
...

我可以使用raw_unicode_escape对大部分内容进行编码和显示 但是,与\u一样的所有字符都会像上面的第三个字符一样无法正确显示:�\u017d。我该如何解决这个问题? 修改 上面的每个字符串都应该是一个字符

编辑2:我用来读取文件的代码

model_dir = '../../projects/python/test/model-5'
with open(model_dir, 'rb') as f:
    model = pickle.load(f)
seq = model.sequitur
rightI = seq.rightInventory
print repr(rightI.list) 

结果包含与上述示例类似的内容

2 个答案:

答案 0 :(得分:0)

尝试这个

header("HTTP/1.1 200 OK");

答案 1 :(得分:0)

你有一个unicode转义字符串。如果您打印它,并且您的控制台的字体和编码支持它,您将看到以下内容:

>>> sys.stdout.encoding
'UTF-8'
>>> sys.getfilesystemencoding()
'UTF-8'
>>> i
[u'\xc4\x91', u'\xc3\xad', u'\xc3\u017d']
>>> for q in i:
...   print(q)
...
Ä
í
ÃŽ

为确保正确渲染(打印在屏幕上),您需要确保:

  • 文件的编码对于在文件中输入的数据是正确的。
  • 终端的编码和字体支持字形

如果您看到�,则表示为应用程序声明的编码不支持该特定代码点,因此系统不知道如何呈现它。