Python 输出中文问题,真是整疯了。。。

#-*-coding:cp936-*-还是#-*-coding:utf-8-*-s="你好"这里变成s=u"你好"有什么用?prints百度了半天还是不懂。。。只是知道先... # -*- coding: cp936 -*- 还是 # -*- coding: utf-8 -*-
s = "你好" 这里变成 s = u"你好" 有什么用?
print s

百度了半天还是不懂。。。只是知道先decode()成unicode ,然后再encode()成其他编码,问题是这个其他倒是是什么呢????
# -*- coding: cp936 -*- 和 # -*- coding: utf-8-*- 选哪个呢?后者是linux里用的?
我是windows的,在notepad++的格式里已经设置成了 utf-8
展开
 我来答
nbyh2012
推荐于2017-11-25 · TA获得超过3278个赞
知道小有建树答主
回答量:483
采纳率:100%
帮助的人:795万
展开全部

选择# -*- coding: utf-8-*-,因为你文件编码是utf-8的。


也可以这样,形式简单一些:

# encoding: utf-8


python中有两种类型的字符串:普通的str和unicode。一般情况下,处理中文数据推荐使用unicode类型,因为这样就不用考虑编码的问题。到了显示或输出时再转换为存储类型(utf-8、GBK)。但unicode本身是不能输出的,它只是一种内部编码。


看以下示例代码:

# unicode转str,utf-8编码
u'哈哈哈哈'.encode('utf-8', 'ignore')
# unicode转str,GBK编码
u'哈哈哈哈'.encode('gbk', 'ignore')
# str转unicode,其中str为utf-8编码
'哈哈哈哈'.decode('utf-8', 'ignore')
更多追问追答
追问
哭了,不知道怎么感谢你!!最后一个小问题,u'哈哈哈哈'.encode('gbk', 'ignore') 打出来没问题,但是  u'哈哈哈哈'.encode('utf-8', 'ignore')  打出来是一些不认识的字,为什么呢? utf-8 不是比gbk更厉害吗?
追答
utf-8支持的字符比GBK的多。

windows系统?如果utf8格式输出为乱码,证明你的命令行无法显示utf-8格式的编码。我这里正好相反,显示不出GBK格式的编码。因为不能正常显示,所以就不认识了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式