为什么打印顺序混杂了浮点数和阿拉伯字符串?

时间:2018-09-17 00:54:02

标签: python python-3.x unicode printing

在Python 3中,这是

alternates={'Qabr Ḩamdān', 'قبور حمدان', 'Qabr Hamdan', 'Qubur Hamdan', 'Qubūr Ḩamdān', 'qbwr hmdan'}
for x in alternates:
    print(12.1, x, 13.2)

产生此:

12.1 Qabr Ḩamdān 13.2
12.1 قبور حمدان 13.2
12.1 Qabr Hamdan 13.2
12.1 Qubur Hamdan 13.2
12.1 Qubūr Ḩamdān 13.2
12.1 qbwr hmdan 13.2

请注意第二行的阿拉伯字符串不正确。为什么?

1 个答案:

答案 0 :(得分:2)

那是正常的。阿拉伯语使用Unicode。

阿拉伯语是从右到左书写的,当说阿拉伯语的人键入文本时,他们会期望阿拉伯语从右到左出现...但是他们会期望像{{ 1}},以从左到右的块嵌入整个从右到左的布局中。 Unicode双向算法尽了最大的努力来满足这一期望。细节非常复杂,并在Unicode Standard Annex #9中列出。