2009-07-14 84 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代碼打好。