Python,支持unicode的最佳方法?

问题描述

| 我有一个Python应用程序,可从网站获取多语言信息,并将其显示一个小的GUI窗口(基于wxpython)中。 我(当前)在源文件中不使用任何特定的unicode语句。 现在,当我从Eclipse中运行python应用程序时,很好地显示了法语字符(如ë),而当我从py2exe打包版本中运行它时,该字符变得很奇怪。 我真的不明白为什么使用py2exe构建时不会产生unicode或与编码相关的错误。 但是,为解决此问题,在本文之后,我将字符串包装到
unicode(my_string,\"utf-8\")
调用中,然后才将其输出到屏幕。这解决了。 问题: 是在显示方法之前将字符串包装在
unicode()
调用中吗? 为什么没有Eclipse中的unicode转换却无法从Windows打包的.exe版本中进行unicode转换,它为什么能工作? 我已经尝试过用unicode缠绕很多次了,但是似乎我与unicode不兼容:-|     

解决方法

        最好的方法是尽快确保字符串是unicode。如果您要抓取网站的图书馆没有用unicode向您证明,那么他们没有做应做的事情(imho)。然后,您必须使用与您正在抓取的网页相同的编码对它们进行自我解码,以使其成为unicode。 您的方法基本上是相反的,尽可能晚地解码。到目前为止,它的工作基本上仅仅是运气,因为您还没有遇到过任何非utf8字符串。任何iso-8859-1字符串都会破坏您的应用程序。     ,           为什么没有Eclipse中的unicode转换却无法从Windows打包的.exe版本中进行unicode转换,它为什么能工作? 我假设您正在Eclipse中使用PyDev? 太近发生在我身上,PyDev将sys.getDefaultEncoding()更改为\“ utf-8 \”。这意味着从文件(或其他任何文件)读取和写入将默认为UTF-8。但是一旦我从控制台启动它,它又回到了操作系统的默认值(例如,对于Windows,为
ascii
) 声明字符串的一个好习惯是在其前面加上一个“ 3”:
u\"the string\"
这样字符串就以UTF-8表示。在Python 3+中成为默认     ,        我可能是错的,但是我认为它在Eclipse中有效,因为默认情况下在UTF-8中工作,而
py2exe
则生成Windows Latin-1可执行文件。 通过使用ѭ6,您将以UTF-8编码显式创建一个Python unicode对象。因此,解释器在使用对象时采用此编码。 Unicode对象可以在很多方法/函数/类中透明地用作字符串,包括
print
。无论如何,要警告您有时必须使用
string
作为函数参数。 您是否在文件的@top处放置了
# -*- coding: utf-8 -*-
来指示解释器\“此文件中的任何字符串都位于UTF-8中”? 它可以让您避免将字符串显式转换为unicode对象。