在Unicode中,为什么阿拉伯数字有两种表示形式?

Kar*_*rim 18 unicode arabic

我正在阅读Unicode @ Wikipedia(阿拉伯语Unicode)的规范,我看到每个阿拉伯数字都有2个Unicode代码点.例如,1定义为U + 0661和U + 06F1.

我应该使用哪一个?

Jon*_*ler 42

根据代码表,U + 0660 .. U + 0669是ARABIC-INDIC DIGIT值0到9,而U + 06F0 .. U + 06F9是EXABENDED ARABIC-INDIC DIGIT值0到9.

在Unicode 3.0书中(5.2是当前版本,但这些东西在设置后没有太大变化),U + 066n系列字形被标记为'阿拉伯语 - 印度数字',而U + 06Fn系列字形被标记为'东部阿拉伯语 - 印度数字(波斯语和乌尔都语)'.它还指出:

  • U + 06F4 - '波斯语和乌尔都语中的不同字形'
  • U + 06F5 - '波斯语和乌尔都语共享与阿拉伯语不同的字形'
  • U + 06F6 - '与阿拉伯语不同的波斯字形'
  • U + 06F7 - '乌尔都语与阿拉伯语不同'

为了比较:

  • U + 066n:0123456789
  • U + 06Fn:0123456789

或者,通过将信息变为标题来扩大:

U + 066n:0123456789

U + 06Fn:0123456789

要么:

     U+066n    U+06Fn
0      ?         ?
1      ?         ?
2      ?         ?
3      ?         ?
4      ?         ?
5      ?         ?
6      ?         ?
7      ?         ?
8      ?         ?
9      ?         ?
Run Code Online (Sandbox Code Playgroud)

(你是否可以看到它们中的任何一个,以及它们与众不同的程度可能取决于你的浏览器和机器上安装的字体.我可以清楚地看到4和6的区别; 5看起来大致相同都.)

根据这些信息,如果您正在使用中东的阿拉伯语,请使用U + 066n系列数字; 如果您使用波斯语或乌尔都语,请使用U + 06Fn系列数字.作为Unicode应用程序,您应该接受任意一组代码作为有效数字(但您可能会看到混合两组数字的序列 - 或者您可能只是单独留下).

  • +1:如果你没有在1分钟内打败我就会得到答案;-)很可惜每个人似乎都认为差别无关紧要并急于做出不明智的答案...... (4认同)