加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python Unicode错误,同步开发环境和生产

发布时间:2020-12-16 23:53:44 所属栏目:Python 来源:网络整理
导读:我刚刚遇到一个正在运行的应用程序的一些unicode错误,每次都要处理非常奇怪的字符串,最近, P?nar Kars?yaka 在我的开发环境中(Aptana w.PyDev on Mavericks Mac上有一个最新的自制软件安装),处理这个字符串不会产生错误,并打印到控制台 Pu0131nar Karsu013

我刚刚遇到一个正在运行的应用程序的一些unicode错误,每次都要处理非常奇怪的字符串,最近,

P?nar Kars?yaka

在我的开发环境中(Aptana w.PyDev on Mavericks Mac上有一个最新的自制软件安装),处理这个字符串不会产生错误,并打印到控制台

Pu0131nar Karsu0131yaka v Torku Selcuk

但是在生产环境中,标准的Ubuntu和Python安装在Amazon EC2小盒子上,打印得像

Pxc4xb1nar Karsxc4xb1yaka v Torku Selcuk

并给出一个可怕的Python错误,

UnicodeEncodeError: 'ascii' codec can't encode character u'u0131' in position 50: ordinal not in range(128)

我想知道如何(如果可能的话)使prod环境能够处理这些字符,比如我的开发环境可以,但也希望能够改变我的开发环境,像prod一样打破,所以我可以处理代码中发生这种情况的事件.

感谢您对此提供任何帮助.

Mac Python –
?Python 2.7.5(默认,2013年11月1日,18:38:34)
?[dclwin上的[GCC 4.2.1兼容的Apple LLVM 5.0(clang-500.2.79)]

Ubuntu Python –
?Python 2.7.3(默认,2013年4月10日,06:20:15)
?linux2上的[GCC 4.6.3]

最佳答案
如果你在python源的2.7分支中稍微潜水一下,你会发现default encoding of unicode strings首先是set to some forced value(现在,它是“ascii”,虽然它之前是“utf-8”),但它是overridden by the site module在解释器的每个实例化期间.

要检查每个平台上的行为,请运行:

$python -c 'import sys; print(sys.getdefaultencoding())'

现在,如果你想让它们均匀,那就不是很简单,因为它的功能
‘setdefaultencoding’是deleted in the site module,所以你必须这样做
重新加载sys模块以获取它:

$python -c 'import sys; reload(sys); sys.setdefaultencoding("utf-8"); print(sys.getdefaultencoding())'

这样,无论语言环境如何,您都可以在解释器中的每个平台上使用相同的编码
从os到python构建的多个级别定义的编码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读