2009-07-14 87 views
2

我必须在我的python应用程序中使用特殊字符。 例如:Ƃ 我的信息是这样的: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的脚本我得到一个错误:

Non-ASCII character '\xc8' ... How can i use it in strings for my application?

回答

11

你应该告诉该编码你”解释重新使用,因为显然你的系统默认为ascii。见PEP 263。在你的情况下,把你的文件的顶部如下:

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

注意,您不必写正是是什么; PEP 263允许更多的自由,以适应几个使用稍微不同的约定用于相同目的的流行编辑。另外,该串还可以放置在第二行上,例如,当第一个用于shebang时。

1

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

foo = u'ƃƃƃƃƃ' 
+0

我不明白为什么downvote,因为这个问题是如此模糊。 +1。 – 2009-07-14 20:30:23

0

声明Unicode字符串。

somestring =u'æøå”

3

虽然答案所以票价是正确的,我想我会提供一个更完整的处理:

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

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

这说明:使用

  1. 的U前缀,以确保字符串是unicode对象
  2. 使用U逃逸在基本多语种平面字符(U + FFFD及以下)
  3. (U + 0182拉丁语大写字母B加上TOPBAR)和Б(U + 0411 CYRILLIC CAPTIAL LETTER BE)仅仅是许多令人困惑的相似之处的例子(U + 10000和以上)
  4. Unicode codepoints

无处不在的Python的默认脚本编码是ASCII。因此,你必须使用上面的转义来编码非ASCII字符的文字。

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

这只会改变你的脚本编码:你可以用一条线,如通知你的脚本编码的Python解释器。不过,你可以写:

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

请注意,您还是要使用u前缀获得unicode对象,而不是str对象。

最后,可能更改用于str的默认编码...但是这并不推荐,因为它是一个全球性的变化,并不得与其他Python代码打好。