如何在一串阿拉伯语中颠倒两个单词的顺序?

时间:2012-10-15 06:14:07

标签: string perl unicode bidi

我需要在perl中反转阿拉伯字符串的文本方向,就像我在这个Fiddle中使用CSS一样。我是perl的新手,所以我需要一些指导来获得我的预期结果。

我正在寻找与Fiddle中显示的完全相同的结果。我已经尝试了这个StackOverflow Question中的建议。

但是这段代码实际上是颠倒了文本中单词的顺序。如果我对阿拉伯文本做同样的事情,它将改变它的含义。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

您应始终以书写顺序存储文本。文本的方向是您使用的Unicode字符的属性,用于阅读文本的程序(文本编辑器,Web浏览器......)应实现Unicode bi-directional text algorithm以正确显示它。如果您正在编写一个程序来显示文本(而不仅仅是生成它),您会发现Text::Bidi CPAN module很有帮助。

对于从右到左和从左到右语言的某些混合,bi-di算法可能会出错。在这些情况下,您可以在输出中添加Unicode方向性标记。例如,如果阿拉伯语中的段落恰好以英语产品名称开头,则可以在开头插入RTL mark,以便正确显示整个段落。在Perl:

my $RLM = "\x{200F}"; # Unicode RIGHT-TO-LEFT MARK
say "${RLM}Quux ﻢﻧ ﺎﻠﻣﺎﻠﻛ: \"Centre D\'affaires\"";