可能重复:
更改python的默认编码?
我正在阅读python中的潜水,它提到在XML解析章节中设置python的默认编码方案.
该setdefaultencoding在使用 python的安装-DIR /站点包/ pyanaconda/sitecustomize.py
import sys
sys.setdefaultencoding('utf-8')
Run Code Online (Sandbox Code Playgroud)
但是当我运行脚本时,它会引发:
AttributeError: 'module' object has no attribute 'setdefaultencoding'
Run Code Online (Sandbox Code Playgroud)
无论如何,如何设置默认编码?
我正在使用python 2.7
解决方案: 在python安装中找到site.py.
编辑setencoding功能
def setencoding():
encoding = "ascii"
if 0:
import locale
loc = locale.getdefaultlocale()
if loc[1]:
encoding = loc[1]
if 0: #changes comes here, change 0 to 1
encoding = "undefined" #the encoding you want
if encoding != "ascii":
sys.setdefaultencoding(encoding)
Run Code Online (Sandbox Code Playgroud)
我正在使用python 2.7
经过2个 提问有关数据类型之间的区别str和unicode,我还在疑惑在下面.
在第1区,我们看到城市的类型unicode正如我们所期望的那样.
然而在方框2中,在通过磁盘往返(redis)之后,城市的类型是str(并且表示不同).
存储在磁盘上,读入和写入的教条在某处失败了.utf-8unicodeutf-8
为什么是第二个实例type(city) str而不是unicode?
同样重要的是,这有关系吗?你关心你的变量是否unicode还是str,还是你忘却的区别只是,只要代码"做正确的事"?
# -*- coding: utf-8 -*-
# Block 1
city = u'Düsseldorf'
print city, type(city), repr(city)
# Düsseldorf <type 'unicode'> u'D\xfcsseldorf'
# Block 2
import redis
r_server = redis.Redis('localhost')
r_server.set('city', city)
city = r_server.get('city')
print city, type(city), repr(city)
# Düsseldorf <type 'str'> 'D\xc3\xbcsseldorf'
Run Code Online (Sandbox Code Playgroud)