python的字符编码叙述_Python 编码问题:出现中文乱码-- (转)

问题描述:

在写Python代码的过程中,有用到需要输出中文的地方(python2.6.5在中文注释的地方就会出错),但是运行后会出错

我的错误显示:

SyntaxError: Non-ASCII character '\xef' in file WebService.py on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

错误提示中给出了问题解决的连接

问题解决:

通过学习错误中给出的连接,发现是编码问题,如果在python中出现了非ASCII码以外的其他字符,需要在代码的开头声明字符格式。

具体声明字符的方法有三种:

1.  #coding=

2.  #!/usr/bin/python

#-*-coding:-*-

3.  #!/usr/bin/python

# vim: set fileencoding= :

选用三种种的一种,在代码的开头加上指定的编码格式。就会解决刚才出现的问题。

例如,我在代码中加入了(必须将编码注释放在第一行或者第二行):

#!/usr/bin/python

#-*-coding:utf-8-*-

这就解决了显示中文的问题。

Python的经典问题——中文乱码

估计入门时都会遇到的。我是在windows下用的Python25自带的IDLE编辑运行的,发现运行脚本得出的结果有一些中文显示是乱码,但有一些是正常的。百思不得其解。首先查看了一下源文件的编码格式,是UTF-8。经过搜索再搜索,调试再调试,也换了几个编译器,发现比IDLE还糟糕(可能需要进行encode设置)。问题终于解决了,一共花了俺将近5个小时,写在这里,希望遇到问题的人能搜索到这里,不再重犯。

乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。解决方法:在控制台打印的地方用一个转码就ok了,打印的时候这么写:print myname.decode('UTF-8').encode('GBK')比较通用的方法应该是:import systype = sys.getfilesystemencoding()print myname.decode('UTF-8').encode(type)

值得阅读的文章:Python 处理中文的一些小技巧UNICODE encoding

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值