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

来源:互联网 发布:js获取元素的父节点 编辑:程序博客网 时间:2024/06/05 19:03

中文编码相关,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”。


原创粉丝点击