字符串编码解码这些知识我有了解一些,因为刚接触python,这些东西在python中的表现就有点陌生了,这里记录下遇到的相关实例供学习参考。
问题1
首先,当我们编辑py脚本时,如果直接输出中文,会报错:
#!/usr/bin/python
print '你好'
'''
SyntaxError: Non-ASCII character '\xe4' in file xxx, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
'''
可以看到,错误信息:非ASCII码出现,但是没有编码声明,编译器不识别。
这里,添加一段声明即可实现:
#-*- coding: utf-8
这是什么原因呢? 我们都知道,计算机识别的语言都是0/1二进制格式,我们需要通过进行字符编码转换处理后再丢给计算机让其能识别我们的输入内容,因此才会报错没有编码声明。
在python 中,对于str,选用Unicode作为其默认编码字符集,utf-8就是对unicode进行编码的一种方式。
这个引用的意思就是说表明该文件的编码类型是utf-8编码类型。
当取回来的数据与你当前脚本中声明的编码不一致时就要做编码转换
在编码转换时首先要将该数据以自身编码的格式换成unicode码,再将这个unicode按utf8编码
Python 里面的编码和解码也就是 unicode 和 str 这两种形式的相互转化。编码encode是 unicode -> str,解码decode就是 str -> unicode。
s = '你好啊'
print type(s.decode('utf-8'))
print type(s.decode('utf-8').encode('utf-8'))
'''
'''
python解析器需通过声明utf8编码类型,之后对其进行先编码后解码转成unicode。整个过程如下:
计算机 encodedecode
CLI: str --- >str(Unicode)
再举个例子解释下上面说的内容,下面会报错:
UnicodeDecodeError: 'ascii' codec can't