2017-10-01 32 views
2

我想用Python打印乌尔都语单词。我读过Unicode,但是我面对的问题是python尝试像英文一样打印乌尔都语,也就是从左到右,逐个字符地打印。在乌尔都语字符中]不能像英文那样打印。我已经尝试了几个解决方案,如提到的here,但他们不适合我。我一直试图用下面的代码打印我的乌尔都语字符串。印刷乌尔都语(非拉丁语言)逐字使用python

text_string = "آکاش کمار".decode('utf-8') 
print text_string 

output我得到Ubuntu的终端是像英语由左到右,而不是从右到左和性格太字符。

+0

这是因为您的终端不使用正确的文本布局引擎。 –

+0

这是一个终端应用程序的问题,更确切地说,它应该打印命令提示符LTR和您的输出RTL。这会导致很大的混乱,尤其是当两者都在一条线上时。所以通常只能有一个方向。 –

回答

2

我认为问题在于Gnome终端不支持双向(即从右向左或“RTL”)文本输出。如果我运行上面的程序(有编码声明):在Emacs的外壳缓冲区

# -*- coding: utf-8 -*- 
text_string = "آکاش کمار".decode('utf-8') 
print(text_string) 

(与确实支持混合LTR和RTL输出),我得到正确的输出:

$ python2 urdu.py 
آکاش کمار 
$ 

但是,如果我在Gnome终端中运行它,我会得到您发布的向后输出。

如果您不使用Emacs,另一种方法是安装mlterm(多语言终端)软件包并使用它提供的终端仿真程序。

+0

感谢您的帮助,但我试图用这个东西实现的真正目标是生成包含乌尔都语文本的图像,以训练文本/非文本乌尔都语分类器。我遵循相同的代码,而不是打印输出,我试图在图像上绘制它,但我仍然有类似的问题。 –

+0

@NileshKumar:*再次*,布局引擎。使用一个。 –

相关问题