Python中的Unicode转换

时间:2017-02-02 12:13:15

标签: python dictionary unicode encoding utf-8

我想将字典中的字符串转换为中文,但不知道如何。一些提示对我有帮助。

  

我的python版本在win32上是2.7.12

首先,我有变量s

s = '\u7279\u6717\u666e\u5973\u513f\u4f0a\u4e07\u5361\u5230\u4e2d\u56fd\u5927\u4f7f\u9986\u8d3a\u65b0\u5e74'

当我使用这两种方法时它起作用:Bo

print u'\u7279\u6717\u666e\u5973\u513f\u4f0a\u4e07\u5361\u5230\u4e2d\u56fd\u5927\u4f7f\u9986\u8d3a\u65b0\u5e74'

输出:特朗普女儿伊万卡到中国大使馆贺新年

print eval("u'%s'" %s)

输出:特朗普女儿伊万卡到中国大使馆贺新年

但是当我有一个名为data的dict时,将其打印为以下内容。

data = {
'title' : s,
}
print data

输出显示为

  

{' title':' \ u7279 \ u6717 \ u663 \ u513f \ u4f0a \ u4e07 \ u5361 \ u5230 \ u4e2d \ u56fd \ u5927 \ u4f7f \ u9986 \ u8d3a \ u65b0 \ u5e74'}

3 个答案:

答案 0 :(得分:0)

您可以使用unicode escape

将字符串解码为中文

在Python 3.x

s = b'\u7279\u6717\u666e\u5973\u513f\u4f0a\u4e07\u5361\u5230\u4e2d\u56fd\u5927\u4f7f\u9986\u8d3a\u65b0\u5e74'

注意b字节文字

print(s.decode('unicode-escape'))
特朗普女儿伊万卡到中国大使馆贺新年

在Python 2.x

print s.decode('unicode-escape')
特朗普女儿伊万卡到中国大使馆贺新年

编辑: 在您的情况下,因为您使用的是python 2.7:

s = u'\u7279\u6717\u666e\u5973\u513f\u4f0a\u4e07\u5361\u5230\u4e2d\u56fd\u5927\u4f7f\u9986\u8d3a\u65b0\u5e74'

注意使用'u'- unicode文字。

现在如果你想打印它只需输入print s,打印就像一个编码器

如果你想在字典中使用它,只需使用s,因为最终它将被存储为unicode字符串,每当你想看到结果时只打印值。

答案 1 :(得分:0)

第一点:print data打印您的data字典的内部表示(repr(data)的结果),因此您可以获得字符串的内部表示。您会注意到与print repr(s) vs print s相同的行为。

另外,如果你想使用unicode字符串,你必须通过在字符串litteral前加上'u'来明确告诉Python它是一个unicode字符串,即:

s = u'\u7279\u6717\u666e\u5973\u513f\u4f0a\u4e07\u5361\u5230\u4e2d\u56fd\u5927\u4f7f\u9986\u8d3a\u65b0\u5e74'
print s

这不会使您的print data按预期工作,但至少可以按原样或通过将其编码为所需的编码来正确打印您的unicode字符串。

注意:如果您的Python版本足够新,您也可以使用__future__ import unicode_literals启动脚本,这将告诉Python将此模块中的每个和任何文字字符串视为unicode字符串。

NB2:如果你从外部资源获得了s字符串,那么就会出现问题 - 因为你得到的是一个包含unicode点的字节字符串 - 所以首先解决这个问题(你应该得到正确编码字节串 - 以已知编码 - 或者最好是正确的unicode字符串)。

答案 2 :(得分:0)

您可以使用pprint。这是quora的答案 回答你的问题。将其置于空闲状态以正确查看解码字符串

https://www.quora.com/How-do-you-print-a-python-unicode-data-structure

$.ajax({
        type: 'POST',
        data: {project: ""+currentProject+"", script: ""+script+""},
        url: url,
        success: function (content, textStatus) {}
    });