2015-03-02 70 views
-8

enter image description here如何使用python顯示非ASCII字符

我想看到的原始值(以英語以外的語言)在控制檯沒有打印功能(而不是一個Unicode格式)。但是,如果我使用沒有打印功能的代碼,然後顯示匿名值(以unicode)。我正在使用龍捲風框架

+0

「我要原來的值,而打印功能」?那是什麼意思 ?你想做什麼原創的價值?什麼是原始價值? – 2015-03-02 11:22:17

+0

作爲原始值的「এইএকটিকলম」 – 2015-03-02 11:24:12

+0

'print'將打印對象的值。嘗試像'my_object = gs.translate('這是一個筆','bn')',然後只是說'my_object'並輸入 – 2015-03-02 11:27:17

回答

2
gs.translate('this is a pen','bn') 

產生一個Unicode字符串。如果您只需在交互式解釋器中鍵入​​,則會打印該字符串的representation,即

u'\u098f\u0987 \u098f\u0995\u099f\u09bf \u0995\u09b2\u09ae'

但是,當在鍵入print(gs.translate('this is a pen','bn')) Unicode數據被編碼成使用默認的編碼(這似乎是UTF-8),使得數據可打印的字節流。

您可以執行編碼明確:

uni = u'\u098f\u0987 \u098f\u0995\u099f\u09bf \u0995\u09b2\u09ae' 
s = uni.encode('utf-8') 
print(s) 

輸出

এই একটি কলম 

注意的s表示是以下字節的字符串:

'\xe0\xa6\x8f\xe0\xa6\x87 \xe0\xa6\x8f\xe0\xa6\x95\xe0\xa6\x9f\xe0\xa6\xbf \xe0\xa6\x95\xe0\xa6\xb2\xe0\xa6\xae' 

所以這就是將被打印如果在提示符下鍵入s,則爲交互式解釋器。

你不能得到解釋打印এই একটি কলম簡單地鍵入變量名稱或簡單的表達,因爲它總是顯示變量或表達式的表示。因此,如果您想在交互式解釋器中查看實際的孟加拉語(?)文本,則需要使用print(或sys.stdout.write)來指示它打印UTF-8編碼的數據。

+0

我正在使用龍捲風。所以這裏我怎麼渲染「এইএকটিকলম」? – 2015-03-02 12:05:01

+0

@ArifurRahim:我不使用龍捲風,但看到[這個答案](http://stackoverflow.com/a/5658067/4014959) – 2015-03-02 12:09:06

0

另一種方法是使用Python 3:

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> u'\u098f\u0987 \u098f\u0995\u099f\u09bf \u0995\u09b2\u09ae' 
'এই একটি কলম'