您的位置:首页 > 编程语言 > Python开发

中文编码相关,python处理gbk编码的xml文件方法

2013-07-07 22:52 691 查看
中文编码相关,python处理gbk编码的xml文件方法

XML文件的编码:
W3C定义了三条XML解析器如何正确读取XML文件的编码的规则:
 1,如果文挡有BOM(字节顺序标记,一般来说,如果保存为unicode格式,则包含BOM,ANSI则无),就定义了文件编码
 2,如果没有BOM,就查看XML声明的编码属性(就是文件开始的这一句:<?xml version="1.0" encoding="utf-8"?>)
 3,如果上述两个都没有,就假定XML文挡采用utf-8编码(BOM: byte order mark,utf-8文件的BOM为FF FE,用ultraedit打开看16进制的头两个字节即是)

有了这三条规则,那么,XML解析器首先尝试根据文件的BOM来解析文件;如果没有找到BOM,就继续尝试根据encoding属性指定的编码来解析文件;如果文件中没有encoding属性,则用utf-8编码来解析文档。(如果BOM和encoding都有的话,则以BOM为准)

gbk与gb2312
总体说来,GBK包括所有的汉字,包括简体和繁体,而gb2312则只包括简体汉字。
gb2312:全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。
gbk: 汉字国标扩展码,基本上采用了原来GB2312-80所有的汉字及码位,并涵盖了原Unicode中所有的汉字。

python ElementTree处理gbk(或者gb2312)编码的XML文件的方法:
1,py文件的编码是utf-8,即在文件最开始有如下语句声明编码方式:
#-*-coding: utf-8-*-

2,读取文件内容时转码为utf-8的:
xml_file_text = open(xml_file_name).read().decode('gbk').encode('utf-8')
这样在处理过程中均是utf-8编码的字符串

4,打开输出文件,将stdout重定向到这个文件:

ouput_xml_file = open(output_xml_file_name, 'w+')

sys.stdout = ouput_xml_file

3,在输出xml文件时转为gbk:
print output_line.encode('gbk')

这样输出的xml文件就是gbk编码的

附:将xml文件保存为gbk(gb2312)编码的方法:用ultraedit打开,按F12另存为,选择格式为“ANSI/ASCII”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐