【发布时间】:2014-02-26 08:18:12
【问题描述】:
我有一个我在 Windows 机器上的 Web2py 框架中开发的系统,现在它部署在 Linux 机器上。在这个系统中,我检查 Unicode 的输入数据类型,如果不是,则返回错误消息,因为需要 Unicode。我将参数作为u'HI' 或unicode('HELLO') 发送给它。这在我的 Windows 机器上工作,但现在我已经在 Linux 上部署了系统,因为需要 Unicode,所以我遇到了错误。如果我遗漏了什么,请告诉我。
我在两台机器上都有相同版本的 Python(2.7.2)。
这就是我检查输入变量类型的方式:
if isinstance(value,getattr(__builtin__,'unicode')) or isinstance(value,unicode)):
pass
else:
return "error message"
我已尝试在我的机器和 linux 服务器上执行以下命令来检查 python 编码设置。结果如下:
我的机器-
>>> import sys
>>> print sys.stdout.encoding
cp1252
>>> print sys.stdin.encoding
cp1252
>>> sys.getdefaultencoding()
'ascii'
>>>
在 Linux 机器上
>>> import sys
>>> print sys.stdout.encoding
UTF-8
>>> print sys.stdin.encoding
UTF-8
>>> sys.getdefaultencoding()
'ascii'
>>>
我是否需要更改任何机器上的编码设置才能解决此问题?
【问题讨论】:
-
你能展示一些相关的代码,输入和输出吗?您是否在两个操作系统中使用相同的 Python 版本?
-
@PauloBu 刚刚编辑了问题。
-
我认为您在问题中没有提供足够的信息让我们回答。例如,尚不清楚您是如何通过输入的。
-
@PauloBu 这是一个使用 web2py 服务器开发的 JSON 网络服务。我正在尝试使用我的 Windows 机器上的 jsonrpclib 访问该服务。我以 Unicode 格式传递数据(例如:user_ip_address=unicode('10.253.152.71'))。如果您需要更多详细信息,请告诉我。
-
这听起来不像是互操作性问题,而更像是服务和/或 web2py 本身的问题。