python xmltodict 解析xml gbk 编码问题解决

介绍 python xmltodict 解析xml gbk 编码问题的解决方法

python xmltodict 解析xml gbk 编码问题解决

错误提示

1
ValueError: multi-byte encodings are not supported

解决实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# -*- coding: utf-8 -*-

import json
import xmltodict

d = xmltodict.parse("""<?xml version="1.0" encoding="GBK"?>
<request>
<head>
     <h_exch_code>880061</h_exch_code>
     <h_bank_no>0000</h_bank_no>
     <h_branch_id>B00000</h_branch_id>
     <h_fact_date>20110224</h_fact_date>
     <h_fact_time>14:49:20</h_fact_time>
     <h_exch_date>20110224</h_exch_date>
     <h_serial_no>12345678</h_serial_no>
     <h_rsp_code></h_rsp_code>
     <h_rsp_msg></h_rsp_msg>
</head>
<body>
     <record>
            <user_id>1204300001</user_id>
            <user_pwd>e10adc3949ba59abbe56e057f20f883e</user_pwd>
            <login_ip>127.0.0.1</login_ip>
     </record>
</body>
</request>

""", encoding="utf-8")

print d
print json.dumps(d)
print xmltodict.unparse(d, encoding='GBK')

注意两个 encoding

输出

1
2
3
4
5
6
OrderedDict([(u'request', OrderedDict([(u'head', OrderedDict([(u'h_exch_code', u'880061'), (u'h_bank_no', u'0000'), (u'h_branch_id', u'B00000'), (u'h_fact_date', u'20110224'), (u'h_fact_time', u'14:49:20'), (u'h_exch_date', u'20110224'), (u'h_serial_no', u'12345678'), (u'h_rsp_code', None), (u'h_rsp_msg', None)])), (u'body', OrderedDict([(u'record', OrderedDict([(u'user_id', u'1204300001'), (u'user_pwd', u'e10adc3949ba59abbe56e057f20f883e'), (u'login_ip', u'127.0.0.1')]))]))]))])

{"request": {"head": {"h_exch_code": "880061", "h_bank_no": "0000", "h_branch_id": "B00000", "h_fact_date": "20110224", "h_fact_time": "14:49:20", "h_exch_date": "20110224", "h_serial_no": "12345678", "h_rsp_code": null, "h_rsp_msg": null}, "body": {"record": {"user_id": "1204300001", "user_pwd": "e10adc3949ba59abbe56e057f20f883e", "login_ip": "127.0.0.1"}}}}

<?xml version="1.0" encoding="GBK"?>
<request><head><h_exch_code>880061</h_exch_code><h_bank_no>0000</h_bank_no><h_branch_id>B00000</h_branch_id><h_fact_date>20110224</h_fact_date><h_fact_time>14:49:20</h_fact_time><h_exch_date>20110224</h_exch_date><h_serial_no>12345678</h_serial_no><h_rsp_code></h_rsp_code><h_rsp_msg></h_rsp_msg></head><body><record><user_id>1204300001</user_id><user_pwd>e10adc3949ba59abbe56e057f20f883e</user_pwd><login_ip>127.0.0.1</login_ip></record></body></request>

本文网址: https://pylist.com/topic/141.html 转摘请注明来源

Suggested Topics

python 半角全角的相互转换

全角与半角在中文输入法里经常要接触到,后台在处理用户输入数据时需要对半角全角的相互转换。下面是python 实现的半角全角的相互转换功能。...

python编程中常用的12种基础知识总结

python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重,字典排序,字典、列表、字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件。...

在SAE Python上开启gzip的方法

开启 gzip 的作用自不必说,可以省很多流出带宽,可以省很多云豆。昨天这个博客的云豆消耗,其中流出带宽就占九成多,开启后就会只占五成多。...

python 处理命令行参数

Python 完全支持创建在命令行运行的程序,也支持通过命令行参数和短长样式来指定各种选项。...

Leave a Comment