web开发 Django开发交流群:19525555 注册 | 登陆

'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

在Django写代码时候出现了一下错误

'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

查了一些资料:

内置函数unicode() 提供了访问(编码和解码)所有已注册的Unicode编码的方法。它能转换众所周知的 Latin-1, ASCII, UTF-8, 和 UTF-16。后面的两个可变长编码字符集用一个或多个byte存储Unicode字符。 默认的字符集是 ASCII ,它只处理0到127的编码,拒绝其它的字符并返回一个错误。当一个Unicode字符串被打印、写入文件或通过str()转化时,它们被替换为默认的编码。
例子:

>>> u'abc'
u'abc'
>>> str(u'abc')
'abc'
>>> u'你好'
u'\xc4\xe3\xba\xc3'
>>> str(u'你好')
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    str(u'你好')
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

要把一个Unicode字符串用指定的字符集转化成8位字符串,可以使用Unicode对象提供的encode()方法,它有一个参数用以指定编码名称。编码名称小写。
>>> u'你好'.encode('utf-8')
'\xc3\x84\xc3\xa3\xc2\xba\xc3\x83'

这样问题就解决了

参考资料 : http://doc.chinahtml.com/Manual/Python/tut/node5.html

Tags: encode, python编码, utf-8

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8

发表评论

评论内容 (必填):