如何使用python显示非ASCII字符

时间:2015-03-02 11:03:13

标签: python tornado

enter image description here

我希望在没有打印功能的控制台(不是unicode格式)中看到原始值(使用英语以外的语言)。但是如果我使用没有打印功能的代码然后显示匿名值(在unicode中)。我正在使用龙卷风框架

2 个答案:

答案 0 :(得分:2)

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

生成Unicode字符串。如果您只是在交互式解释器中键入gs.translate('this is a pen','bn'),则会打印该字符串的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编码数据。

答案 1 :(得分: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'
'এই একটি কলম'