2015-11-13 75 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