今天学习Python时,遇到一个问题,Python Non-ASCII character '\xb0'
原因:字符编码问题
解决:首行加入# -*- coding: utf-8 -*-
codec:定义文本到二进制的字符转换
ASCII
UTF-8: 1个字节表示ASCII 完全相同 1-4个字节处理其他字符
(单独值处理UTF-8时,会出现不能以定长字节读取字符)
UTF-16: 固定格式的2字节 分为大端形式和小端形式,不向后兼容ASCII-8
看个例子:写入时用UTF-16编码,读取不用UTF-16解码会出错
'''
An example of Unicode strings
using utf-8
'''
CODEC = 'utf-16'
out = u'hello world\n'
open('1.txt','w').write(out.encode(CODEC))
readin = open('1.txt','r').read()
print readin,
print readin.decode(CODEC),
总结:
1.程序中出现字符串时一定要加个前缀 u.
2.不要用 str()函数,用 unicode()代替.
3.不要用过时的 string 模块,如果传给它的是非 ASCII 字符,会把一切搞砸
4.不到必须时不要在你的程序里面编解码 Unicod 字符.只在你要写入文件或数据库或者网络时才需要