2015-11-13 104 views
4

非常簡單的例子,任何從右到左書寫系統串到Linux終端:打印阿拉伯語或使用Python

city = "‏المكلا‎" 
print(city) 

我期待的輸出爲:

‏المكلا‎ 

但實際上輸出是反向字符串(字母看起來有點不同,因爲它們具有開始,中間和結束形式)。我無法將其粘貼到此處,因爲複製粘貼會再次更正字符串的順序。

我怎樣才能正確打印阿拉伯語到Linux終端?周圍的文本是從左到右(LTR),只有這一行需要從右到左(RTL)。有沒有可以告訴終端的UFT-8字符?

+0

終端的會假設你想LTR輸出(左到右)。你需要配置它爲RTL(從右到左) –

+0

但我只打印這個字符串RTL。其他一切都需要保持LTR。 – tobias47n9e

+0

終端應該怎麼知道? –

回答

0

要創建一個字符串的字符RTL:

rtl = u'\u200f' 

Python 3中默認使用UTF字符串,所以在這種情況下,「U」,在前面的字符串是不必要的。

如果問題確實是終端就不能正確渲染,你可以手動反向的字符串。

test = 'Hello world' 
test = test[::-1] 
# test == 'dlroW olleH' 

也有python-bidi library這可能會有所幫助。 (source

+0

這兩種解決方案都不適合我。儘管顛倒這個順序對拉丁字母起作用,但對阿拉伯語來說,它們似乎並不一樣。混淆:) – tobias47n9e