ElementTree 无法处理中文
2017-09-01 15:33 alapha 阅读(2249) 评论(0) 编辑 收藏 举报ElementTree.fromstring() 导入xml格式时,是可以选择解析parser的编码的,并且 它解析出来的node类型是 严谨且严格的,不会
自己内部全部转换成str,比如 9.87 会解析成float,而不是str字符串9.87,包含有汉字的<Name>李伟</Name> 这样的格式,解析出的“李伟 ” 是python的unicode类型,不会设置字符串的编码格式。!!!重点
另外使用ElementTree.tostring() 到处xml字符串格式时,可以指定字符串格式,以及导出成xml还是text类型
ElementTree.tostring(tree, ‘utf-8’, ‘xml’ )
建议:
1. 凡是涉及到python 中文的,都以unicode来表示,只有当将字符写入文件,写DB 或者网络传输时,才涉及到将 unicode类型 设置UTF-8 或者ASCII或者GBK 等的编码
2. 当涉及到 中文字符串长度计算的时候:
1. 可以将 unicode 中文------->转换成 utf-8,判断 字符值 是不是在 u'\u4e00' 和 u'\u9fa5' ,在这之间的都是汉字
2 . 或者 将unicode 中文------->转换成 GBK 编码, 每个汉字2字节偏移,来截断或者偏移
3. 编码之后(utf-8 或者GBK)的汉字是有编码属性的,需要反向 decode成 unicode类型,至于怎么保存在字段或者DB中,需要再次decode(),一般是decoe(‘utf-8’)