In[9]: print "汉字"
汉字
In[10]: print ["汉字"]
['\xe6\xb1\x89\xe5\xad\x97']
为什么被包含在列表里时就显示成了 \xe6\xb1\x89\xe5\xad\x97
写成
In[13]: print [u"汉字"]
[u'\u6c49\u5b57']
还是有这个问题
In[9]: print "汉字"
汉字
In[10]: print ["汉字"]
['\xe6\xb1\x89\xe5\xad\x97']
为什么被包含在列表里时就显示成了 \xe6\xb1\x89\xe5\xad\x97
写成
In[13]: print [u"汉字"]
[u'\u6c49\u5b57']
还是有这个问题
参考http://www.thinksaas.cn/group/topic/349602/%20%7D
>>> import json
>>> print json.dumps(["汉字"],encoding="UTF-8")
["\u6c49\u5b57"]
>>> print json.dumps(["汉字"],encoding="UTF-8",ensure_ascii=False)
["汉字"]
怎么纠正的话, 楼上的方法是可以得,至于为什么这么设计,转一段话来说吧:
print一个对象,是输出其“为了给人(最终用户)阅读”而设计的输出形式,那么字符串中的转义字符需要转出来,而且 也不要带标识字符串边界的引号。
而在命令行下对对象求值,其输出是为了让程序员探求其内在特征,所以输出结果是对对象的描述。现在问题来了,一个list
对象,本身就是个数据结构,如果要把它显示给最终用户看,而不是用于给程序员调试时,应该如何 “润色”输出格式呢?这显然应该交给程序员去根据应用的需要来做“润色”而不是显示一个用来表示list的方括号,里面却是 给最终用户看的“润色”过的结果。这种蹩脚输出,对最终用户 很不知所云,对程序员调试程序又没啥意义。
简单来说的话,列表作为一个数据结构,一般情况是不会直接给最终用户看俩括号,中间是一点内容的形式,而是要经过润色
,就比如楼上的解法显示中文就是一种润色,还可以迭代输出也可以输出中文。而对程序员来说, 输出编码是更好的显示内在特征。
4 回答4.5k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
4 回答3.9k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
2 回答500 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
请用u"汉字"