我想在我的程序中使用“Importaçãodepetróleo”。
我怎么能这样做,因为所有编码都给我带来了无法编码的错误。
答案 0 :(得分:4)
我认为您将字符串__repr__
与其__str__
混淆:
>>> s = u"Importação de petróleo"
>>> s
u'Importa\xe7\xe3o de petr\xf3leo'
>>> print s
Importação de petróleo
\xe7
和朋友没有问题;它们只是这些特殊字符的编码表示。你无法避免它们,你不应该::)
有关unicode的必读内容: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
答案 1 :(得分:3)
这样做
# -*- coding: utf-8 -*-
print 'Importação de petróleo'
地点
# -*- coding: utf-8 -*-
在程序的最顶层(第一行)。 还要将代码保存为utf-8(默认情况下,如果您使用的是linux)
答案 2 :(得分:2)
如果您在源(.py)文件中使用超出ASCII范围的字符,则需要在文件顶部指定编码,以便Python词法分析器知道如何阅读和解释文件中的字符。
如果是这种情况,那么,作为文件的第一行,请使用:
# coding: utf-8
(如果您的文件实际上采用不同的编码,例如ISO-8859-1,那么您将需要使用它.Python可以处理几种不同的字符编码;您只需告诉它预期的内容)< / p>
答案 3 :(得分:1)
在字符串前添加“u”使其成为unicode。这里的文档提供了有关Python 2.x中Unicode处理的详细信息: -
答案 4 :(得分:1)
正如specialscope所提到的,首先,您已将此添加为程序的第一行:
# -*- coding: utf-8 -*-
如果你不这样做,你会收到类似这样的错误:
SyntaxError: Non-ASCII character '\xc3' in file /tmp/blah.py on line 10,
but no encoding declared; see http://www.python.org/peps/pep-0263.html
for details
到目前为止,这么好。现在,您必须确保包含除纯ASCII之外的任何内容的每个字符串都以u
为前缀:
print u'Importação de petróleo'
但还有一步。这是一个单独的主题,但在您将其发送到stdout
或文件之前,您可能必须最终重新 - 对该字符串进行编码。
以下是Python中Unicode的经验法则:
stdout
)时,请确保将其重新编码为UTF-8。顺便说一句,Python 3中的这一切都发生了变化。
答案 5 :(得分:0)
帮助模块内置:
中的类unicode类unicode(basestring)
| unicode(string [,encoding [,errors]]) - &gt;宾语
|
|从给定的编码字符串创建新的Unicode对象。
| encoding默认为当前的默认字符串编码。
|错误可以是'严格','替换'或'忽略',默认为'严格'。
|
尝试使用“utf8”作为unicode()的编码