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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值