貌似文件开始的#coding:gb2312只对u'string'管用,对unicode('string')不管用,谁清楚两者的区别
我一开始也是这样认为的,但实际操作发现并非如此,如果文件开始用utf-8,那么执行就会报错,必须用gb2312,而且文件开始只是写了#coding:gb2312的话,unnicode(‘string’)就会报错,那么显然两者是不同的,现在我的问题是,我不知道为什么不一样
追答unicode 初始化 源码
def __init__(self, string=u'', encoding=None, errors='strict'): # known special case of unicode.__init__找到了一点线索,当输入如下内容:
import sys
reload(sys)
sys.setdefaultencoding('gb2312')
则unicode('string')就不报错了,但如果不输入,只有文件开头的#coding:gb2312就会报错,但如果文件中只有u'string',则不输入import sys这一堆也没事,还是不知道为什么,如果源码都找不到答案,难道和环境有关系?
你添加
sys.setdefaultencoding('gb2312')
这个的意思,是更改cmd的也就是系统的默认编码的。windows默认是一般是gbk
你也可以
sys.setdefaultencoding('utf-8')
最主要的问题就是编码字符集不一致问题。
将所有的都设置成 utf-8 编码。什么问题都没了。