在最近项目中,让编码问题弄都头极大,往往出现莫名其妙的问题,在痛定思痛后,觉得可以通过以下方案来控制乱码的问题。
python中为什么会出现乱码,其根源就是unicode和各种编码格式的str之间的转换异致的,我们可以这样设想,如果我们系统中只有unicode和UTF-8,那每次使用字符串,要应用的时候,我们就用type()判断,如果返回是str,那必是utf-8的str,那这样就不会出现解码编码的时候用错编码格式而出错或是解出乱码了。
怎么做到这点呢?我们可以以系统的数据来对进入的系统进行一个严格的编码,对于我现在做的系统Walle,数据来源都是有两个:
一是:程序员自己定义的str变量
二是:各种要接入walle的测试工具结果,对于结果,进入系统前,会要求每个进入系统的字符串都调用以下函数进行验证,只有通过的才可以让数据进入本系统,否则,提示其它要用该系统的用户,将结果进行相应的格式转换,一般用户是知道自己的测试结果是什么编码格式的。
函数如下:主是要对传入的数据进行一个unicode和utf-8判断,如果不是,抛出异常