在Unicode中,为什么阿拉伯数字有两种表示法?
我在读Unicode@Wikipedia()的规范 我看到每个阿拉伯数字都有2个Unicode码点。 例如,示例1定义为U+0661和U+06F1在Unicode中,为什么阿拉伯数字有两种表示法?,unicode,arabic,Unicode,Arabic,我在读Unicode@Wikipedia()的规范 我看到每个阿拉伯数字都有2个Unicode码点。 例如,示例1定义为U+0661和U+06F1 我应该使用哪种代码?表示数字4,U+0664还是U+06F4,您更喜欢哪种代码 ٤还是۴ 为了保持一致,请让此选项指导您对1、2和其他重复代码使用哪些代码。根据,U+0660。。U+0669是阿拉伯-印度数字值0到9,而U+06F0。。U+06F9是扩展的阿拉伯-印度数字值0到9 在Unicode 3.0的书中(5.2是当前版本,但这些东西设置后不会
我应该使用哪种代码?表示数字4,U+0664还是U+06F4,您更喜欢哪种代码 ٤还是۴ 为了保持一致,请让此选项指导您对1、2和其他重复代码使用哪些代码。根据,U+0660。。U+0669是阿拉伯-印度数字值0到9,而U+06F0。。U+06F9是扩展的阿拉伯-印度数字值0到9 在Unicode 3.0的书中(5.2是当前版本,但这些东西设置后不会有太大变化),U+066n系列的字形标记为“阿拉伯-印度数字”,U+06Fn系列的字形标记为“东方阿拉伯-印度数字(波斯语和乌尔都语)”。 它还注意到:
- U+06F4-“波斯语和乌尔都语的不同铭文”
- U+06F5-“波斯语和乌尔都语共享与阿拉伯语不同的字形”
- U+06F6-“不同于阿拉伯语的波斯铭文”
- U+06F7-“乌尔都语字形不同于阿拉伯语”
- U+066n:
- U+06Fn:
基于此信息,如果您使用的是来自中东的阿拉伯语,请使用U+066n数字系列;如果您使用的是波斯语或乌尔都语,请使用U+06Fn数字系列。作为一个Unicode应用程序,您应该接受任意一组代码作为有效数字(但您可能会对混合了这两组数字的序列产生怀疑,或者您可能会置之不理)。一般来说,您不应该在应用程序中硬编码此类信息
- 在Windows上,您可以将GetLocaleInfo与LOCALE\u snativeGits一起使用
- 在Mac上使用kCFNumberFormatterZeroSymbol的CFNumberFormatterCopyProperty
- 或者使用类似的方法
而且用户可能已经更改了控制面板中的默认值。+1:如果你没有在1分钟内打败我,你就会做出这个答案;-)遗憾的是,每个人似乎都认为差异无关紧要,并急于做出不明智的回答……大致上这意味着他们不应该有两个代码点。事实上,它们在三种不同的语言中看起来是不同的,这是一个字体问题,不应该在脚本中进行编码。乌尔都语字符编码在不同的点上有一些类似的问题,因为它们看起来不同,即使它们是同一个字母。因此,正确的解决方案是,如果字符是阿拉伯语或乌尔都语,则使用不同的字体来显示字符。Unicode学习阿拉伯语的乐趣。@Dwayne:是的,不,也许吧。我可以看到这个论点,但是为什么他们不重新定位代码点U+0030..U+0039,并说在阿拉伯语字体中,这些应该显示为阿拉伯数字。可能有足够好的理由做出决定——即使没有,这也是标准的状态。请注意,阿拉伯文信函的呈现形式现在已列入补编。阿拉伯语范围为:U+0600..U+06FF中的阿拉伯语;U+0750..U+077F阿拉伯文补编;U+08A0..U+08FF中的阿拉伯文扩展-A;阿拉伯语表示形式-A,U+FB50..U+FDFF;和阿拉伯语表示形式-B在U+FE70..U+FEFF中。是的,乌尔都语几乎总是使用心形5,而不是圆形5。。。最好是在您自己的程序中进行规范化(如果您正在解析)。也许有一个自由党。但是,我无法理解谁会用键盘来书写这些人物,也许有一种机制可以做到这一点。
U+066n U+06Fn
0 ٠ ۰
1 ١ ۱
2 ٢ ۲
3 ٣ ۳
4 ٤ ۴
5 ٥ ۵
6 ٦ ۶
7 ٧ ۷
8 ٨ ۸
9 ٩ ۹