2

我必须在我的 python 应用程序中使用特殊字符。例如:ƃ 我有这样的信息:

U+0183 LATIN SMALL LETTER B WITH TOPBAR

General Character Properties

In Unicode since: 1.1
Unicode category: Letter, Lowercase

Various Useful Representations

UTF-8: 0xC6 0x83
UTF-16: 0x0183

C octal escaped UTF-8: \306\203
XML decimal entity: &# 387;

但是当我只是将符号放入 python-script 时,我得到一个错误:

非 ASCII 字符 '\xc8' ...如何在我的应用程序的字符串中使用它?

4

6 回答 6

12

您应该告诉解释器您正在使用哪种编码,因为显然在您的系统上它默认为 ascii。见PEP 263。在您的情况下,将以下内容放在文件顶部:

# -*- coding: utf-8 -*-

请注意,您不必完全写出来;PEP 263 允许更多的自由,以适应几个流行的编辑器,这些编辑器出于相同的目的使用略有不同的约定。此外,该字符串也可以放在第二行,例如当第一行用于shebang时。

于 2009-07-14T20:24:50.560 回答
3

http://docs.python.org/tutorial/interpreter.html#source-code-encoding

于 2009-07-14T20:26:41.383 回答
3

虽然到目前为止的答案都是正确的,但我想我会提供更完整的处理:

在脚本文字中表示非 ASCII 字符的最简单方法是使用 u 前缀和 u 或 U 转义,如下所示:

print u"Look \u0411\u043e\u0440\u0438\u0441, a G-clef: \U0001d11e"

这说明:

  1. 使用 u 前缀确保字符串是一个unicode对象
  2. 对基本多语言平面(U+FFFD 及以下)中的字符使用 u 转义
  3. 对其他平面中的字符使用 U 转义(U+10000 及以上)
  4. Ƃ (U+0182 LATIN CAPITAL LETTER B WITH TOPBAR) 和 Б (U+0411 CYRILLIC CAPTIAL LETTER BE) 只是许多容易混淆的相似 Unicode 代码点的一个例子

适用于任何地方的 Python 的默认脚本编码是 ASCII。因此,您必须使用上述转义来编码非 ASCII 字符的文字。您可以使用以下行通知 Python 解释器您的脚本的编码:

# -*- coding: utf-8 -*-

这只会更改脚本的编码。但是你可以写:

print u"Look Борис, a G-clef: "

请注意,您仍然必须使用 u 前缀来获取unicode对象,而不是str对象。

最后,可以更改用于str... 的默认编码,但不建议这样做,因为它是全局更改,可能无法与其他 python 代码很好地配合。

于 2009-07-14T20:52:26.247 回答
1

您是否将 Python 文件存储为 UTF-8?你的编辑器支持 UTF-8 吗?你在使用这样的unicode字符串吗?

foo = u'ƃƃƃƃƃ'
于 2009-07-14T20:25:25.020 回答
0

声明 Unicode 字符串。

somestring = u'æøå'

于 2009-07-14T20:25:53.523 回答
0

在python中应该是

u"\u0183"

String 开始前的 u 表示 String 包含 Unicode 字符。

请参阅此处以供参考:

http://www.fileformat.info/info/unicode/char/0183/index.htm http://docs.python.org/tutorial/introduction.html#unicode-strings

于 2009-07-14T20:27:15.843 回答