En Unicode, pourquoi y at-il deux représentations pour les chiffres arabes?

StackOverflow https://stackoverflow.com/questions/1676460

  •  16-09-2019
  •  | 
  •  

Question

Je lisais la spécification Unicode @ Wikipedia ( arabe Unicode ) et je vois que chacun des chiffres arabes a 2 points de code Unicode. Par exemple 1 est défini comme U + 0661 et comme U + 06F1.

Lequel dois-je utiliser?

Était-ce utile?

La solution

Selon les graphiques de code , U + 0660 .. U + 0669 sont DIGIT-INDIC ARABE les valeurs 0 à 9, tandis que U + 06F0 .. U + 06F9 sont prolongées valeurs numériques arabo-indiens de 0 à 9.

Dans le livre Unicode 3.0 (5.2 est la version actuelle, mais ces choses ne changent pas beaucoup une fois mis), le U + 066n série de glyphes sont marqués « chiffres-arabe Indic » et la série U + de Glyphes 06Fn sont marqués «Est-chiffres arabes Indic (persan et en ourdou). Il note également:

  • U + 06F4 - 'différents en persan et Glyphes ourdou'
  • U + 06F5 - 'action persan et ourdou différent du glyphe arabe'
  • U + 06F6 - 'glyphe persan différent de l'arabe'
  • U + 06F7 - 'glyphe ourdou différent de l'arabe'

A titre de comparaison:

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

Ou, agrandie en faisant l'information dans un titre:

U + 066n: 0123456789

U + 06Fn: 0123456789

Ou:

     U+066n    U+06Fn
0      ٠         ۰
1      ١         ۱
2      ٢         ۲
3      ٣         ۳
4      ٤         ۴
5      ٥         ۵
6      ٦         ۶
7      ٧         ۷
8      ٨         ۸
9      ٩         ۹

(Que vous pouvez voir l'un de ceux, et comment peuvent ils sont clairement différenciés dépendent de votre navigateur et les polices installées sur votre machine autant que toute autre chose je peux voir la différence sur 4 et 6 clairement,. 5 ressemble beaucoup le même dans les deux.)

Sur la base de ces informations, si vous travaillez avec l'arabe du Moyen-Orient, utilisez le U + 066n série de chiffres; si vous travaillez avec persan ou ourdou, utilisez la série de chiffres U + 06Fn. En application Unicode, vous devez accepter soit un ensemble de codes valides sous forme de chiffres (mais vous pouvez regarder à une séquence désapprobateur qui mélange les deux séries de chiffres - ou vous pourriez bien seul laisser).

Autres conseils

En général, vous ne devriez pas coder en dur telles informations dans votre application.

  • Sous Windows, vous pouvez utiliser GetLocaleInfo avec LOCALE_SNATIVEDIGITS.
  • Sur Mac CFNumberFormatterCopyProperty avec kCFNumberFormatterZeroSymbol.
  • Ou utiliser quelque chose comme soins intensifs .

Il y a des pays arabes qui n'utilisent pas les chiffres arabe Indic par défaut. Donc, il n'y a pas de correspondance directe dire arabe -.> Chiffres arabe Indic

Et l'utilisateur pourrait avoir changé les paramètres par défaut dans le Panneau de configuration de toute façon.

Quel code voulez-vous pour représenter le numéro 4, U + 0664 ou U + 06F4?

(4 ou 4)?

Pour être cohérent, laissez ce guide de choix qui code que vous utilisez pour 1, 2, et les autres codes en double.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top