以上是test.py,功能是将gbk编码的字符串转为utf-8.编解码是待验证功能
测试:
1——使用gbk编码输入测试输出是否是utf-8类型。
具体怎么验证是否是utf-8呢?tricks...
执行:python test.py 2>result
检查result:cat result,如下
验证编码:
方法1: iconv -f utf-8 -t gb2312 result 结果如下:
如果使用iconv -f gb2312 -t utf-8 result 结果如下
证明结果编码是gbk,正常功能ok
方法2:rz result 到本地,使用ie打开该文件,浏览器会自动识别编码,此时看看浏览器编码类型即可
2--使用utf-8字符串输入
如何构造utf-8字符串?
方法1:使用刚才的输出作为输入
方法2:使用vi 输入汉字,set encoding=gb2312,然后执行iconv -f gb2312 -t utf-8 gbk >utf-8
验证:执行python test_encode.py(内容如下)
结果失败
python编解码程序详解:[下面是转载zz】
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码
代码中字符串的默认编码与代码文件本身的编码一致。
如:s='中文' 如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。【zz end】
这里的 str1 =str.decode('gbk','ignore').encode('utf-8')的实际转换过程是:
1、将编码是gbk的str decode 为unicode,
2、然后将unicode 编码 encode为utf-8
如果str不是gbk,则会出现
这样的问题