2017-10-01 31 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:*再次*,佈局引擎。使用一個。 –

相關問題