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

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

Pınar Karsıyaka

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

P\u0131nar Kars\u0131yaka v Torku Selcuk

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

P\xc4\xb1nar Kars\xc4\xb1yaka 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构建的多个级别定义的编码.

相关文章

在这篇文章中,我们深入学习了XPath作为一种常见的网络爬虫技巧。XPath是一种用于定位和选择XML文档中特...
祝福大家龙年快乐!愿你们的生活像龙一样充满力量和勇气,愿你们在新的一年里,追逐梦想,勇往直前,不...
今天在爬虫实战中,除了正常爬取网页数据外,我们还添加了一个下载功能,主要任务是爬取小说并将其下载...
完美收官,本文是爬虫实战的最后一章了,所以尽管本文着重呈现爬虫实战,但其中有一大部分内容专注于数...
JSON是一种流行的数据传输格式,Python中有多种处理JSON的方式。官方的json库是最常用的,它提供了简单...
独立样本T检验适用于比较两组独立样本的均值差异,而配对T检验则适用于比较同一组样本在不同条件下的均...