Python 在XMLRPC中处理unicode数据

Python 在XMLRPC中处理unicode数据,python,ruby,unicode,xml-rpc,Python,Ruby,Unicode,Xml Rpc,我必须使用Terminator通过XMLRPC将数据迁移到OpenERP。 我发送了一个值为“右耳圆形”的名称。 在Python中,带有的名称可以用值编码:“Rotule right Aur\xc3\xa9lia” 但在Terminator(xmlrpc客户端)中,数据用值“Rotule middle Aur\357\277\275lia”编码 所以在服务器端,数据值没有被正确解码,我得到了坏数据 TerminateOOR是一个用于Ketter(Java产品)的ruby插件,我想它应该用utf-

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

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

有什么帮助吗?

首先,无论何时处理文本(所有文本迟早都会包含一些非字符),在Python3.x中这样做会比在2.x系列中更愉快。如果Py3不是一个选项,请尝试始终使用来自未来的导入unicode文本的


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

首先,无论何时处理文本(并且所有文本迟早都会包含一些非字符),在Python 3.x中这样做会比在2.x系列中更愉快。如果Py3不是一个选项,请尝试始终使用来自未来的导入unicode文本的


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

此问题来自Kettle。 我的程序正在使用Kettle获取Excel文件,获取活动工作表,并将该工作表中的数据传输到TerminateOOR进行进一步处理。 在从Excel文件读取数据的阶段,Kettle无法识别编码,然后将错误数据发送给Terminateoor


我的变通解决方案是在将数据提供给TerminateOOR之前手动将excel导出为csv。通过这样做,我不会使用该功能将excel列名映射为变量名(由Ketter使用)。

这个问题来自Ketter。 我的程序正在使用Kettle获取Excel文件,获取活动工作表,并将该工作表中的数据传输到TerminateOOR进行进一步处理。 在从Excel文件读取数据的阶段,Kettle无法识别编码,然后将错误数据发送给Terminateoor


我的变通解决方案是在将数据提供给TerminateOOR之前手动将excel导出为csv。通过这样做,我不会使用该功能将excel列名映射为变量名(kettle使用)。

这不是Python或xmlrpclib的问题。我可以在Python脚本中很好地完成这样的操作。color={'name':u'Rotule right Aurélia'}oorpc.create('my.color',color)。在幕后,解释器识别数据编码(通过指定#--coding:utf-8-),对其进行编码并将其发送给知道如何处理编码数据的服务器。我想我的问题出在Ruby 1.8(Terminator)上,因为它缺乏unicode支持,这不是Python或xmlrpclib的问题。我可以在Python脚本中很好地完成这样的操作。color={'name':u'Rotule right Aurélia'}oorpc.create('my.color',color)。在幕后,解释器识别数据编码(通过指定#--coding:utf-8-),对其进行编码并将其发送给知道如何处理编码数据的服务器。我想我的问题是Ruby 1.8(Terminator)缺乏unicode支持。