如何在python中编码'Importaçãodepetróleo'字符串?

时间:2012-03-10 06:05:31

标签: python unicode encoding

我想在我的程序中使用“Importaçãodepetróleo”。

我怎么能这样做,因为所有编码都给我带来了无法编码的错误。

6 个答案:

答案 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处理的详细信息: -

Python 2.x Unicode support

答案 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的经验法则:

  1. 如果可能的话,请确保您使用的任何数据都是UTF-8。
  2. 当您将外部UTF-8编码数据读入程序时,立即将其解码为Unicode。
  3. 当您从程序中发送数据(到文件或stdout)时,请确保将其重新编码为UTF-8。
  4. 顺便说一句,Python 3中的这一切都发生了变化。

答案 5 :(得分:0)

帮助模块内置

中的类unicode

类unicode(basestring)  | unicode(string [,encoding [,errors]]) - &gt;宾语  |
 |从给定的编码字符串创建新的Unicode对象。  | encoding默认为当前的默认字符串编码。  |错误可以是'严格','替换'或'忽略',默认为'严格'。  |

尝试使用“utf8”作为unicode()的编码