如何解决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对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。