处理XMLRPC中的Unicode数据

2024-06-08 01:53:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须使用terminator通过XMLRPC将数据迁移到OpenERP。
我发送一个名为“Rotule right Aurélia”。
在Python中,用值“Rotule right Aur\xc3\xa9lia”编码的名称
但在Terminator(xmlrpc客户端)中,数据使用值“Rotule middle Aur\357\277\275lia”进行编码
所以在服务器端,数据值没有被正确解码,我得到了错误的数据。在

TerminateOOR是一个用于Kettle(Java产品)的ruby插件,我想它应该用utf-8编码数据。
我只是不知道为什么会这样。
有什么帮助吗?在


Tags: 数据right名称编码openerpaurxmlrpcterminator
2条回答

这个问题来自Kettle。 我的程序是使用Kettle获取一个Excel文件,获取活动表,并将该表中的数据传输到terminateoor进行进一步处理。 在从Excel文件读取数据的阶段,Kettle无法识别编码,于是将错误的数据交给terminateoor。在

我的解决方案是在给terminateoor数据之前手动将excel导出到csv。通过这样做,我不会使用这个特性来映射excel列名和变量名(由kettle使用)。在

首先,无论何时处理文本(所有文本迟早都会包含一些非US-ASCII字符),在python3.x中而不是在2.x系列中处理时,您会更乐意这样做。如果Py3不是一个选项,请尝试始终使用from __future__ import unicode_literalsavailable in Python 2.6 and 2.7)。在

基本上,当你通过网络发送文本或任何其他数据时,那只会以字节的形式出现(八位字节),因此它必须在某个时刻被编码。试着找出编码在你的工具链中发生的确切位置;如果有必要,使用调试工具(或部署print( repr( x ) )语句)来查看相关变量。您提到的另一个软件大概是用PHP编写的,PHP是一种known to have issues with unicode语言。你说“它应该用utf-8对数据进行编码”,但另一方面,当接收端看到传入RPC请求的数据时,该数据应该已经是utf-8格式的。它必须被解码才能再次获得unicode。在

相关问题 更多 >

    热门问题