转自:http://www.weidianyuedu.com/
理清了关系之后,我们进一步改进下代码:
def UTF8_2_GBK(src,dst):
content = ReadFile(src,encoding=“utf-8”)
WriteFile(dst,content,encoding=“gb18030”)
运行后,发现没有报错,可以正常运行。
因为,在GB18030字符集中,可以找到u’\xa0’对应的字符。
此外,还有另外一种实现方案:
需要修改下WriteFile方法
def WriteFile(filePath,u,encoding=“gbk”):
with codecs.open(filePath,“w”) as f:
f.write(u.encode(encoding,errors=“ignore”))
这里,我们将Unicode编码(encode)成gbk格式,但是注意encode函数的第二个参数,我们赋值"ignore",表示在编码的时候,忽略掉那些无法编码的字符,
解码同理。
但是,当我们执行后,发现可以成功的将utf-8格式的文件修改成了ansi格式。但,另外发现生成的文件中,每个一行都有一行空行。
这里,可以指定以二进制流的形式写文件,修改后的代码如下:
def WriteFile(filePath,u,encoding=“gbk”):
with codecs.open(filePath,“wb”) as f:
f.write(u.encode(encoding,errors=“ignore”))