Python2.7编程中遇到的一些编码问题小结
0.1. Python code中指定编码方式
1.指定源文件的的编码方式 作用:解决python解释器载入py程序文件时编码报错问题
|
|
|
|
以上方式效果是等价的,选择一种使用即可
2.指定中文代码默认解码方式 作用:解决解释器环境输出文本时乱码的部分问题
关于reload(sys)?: setdefaultencoding函数在第一次系统调用后会被删除,另外由于python的import的“ifndefine”机制,import sys不能保证sys被加载,所以由reload显式加载sys
0.2. 关于未知编码转utf8编码
一个实际数据场景:数据来源和存储形式多样,编码多样,需要将不同编码转化为utf8编码进行后续加工处理
|
|
以上代码可以解决遇到的比较多得编码转换问题,但之前有碰到一些调皮些的编码问题
好尴尬,chardet.detect以绝对的自信检测出该编码为ascii,所以unicode函数没有起作用
0.2.1. 介绍两个函数
repr(): 返回机器存储方式
|
|
eval(): 将字符串str当成有效的表达式来运行并返回结果
|
|
是不是想到了sql注入攻击?
0.2.2. 回到调皮编码的问题
|
|
以上编码离repr(‘这是一个编码’)在存储上只差一个’u’ 个人处理chardet.dect解决后仍有问题的编码,通常按一下方式解决: >1.透过现象看本质,repr()后查看字符串的机器存储方式 >2.找规律,找这些编码方式和已知编码方式的相似处和区别 >3.手术刀,修改机器存储方式,通过eval()函数整合为新的编码的字符串
解决问题过程大概如下:
|
|