Domanda

Stavo leggendo la specificazione di Unicode @ Wikipedia ( arabo Unicode ) e vedo che ciascuna delle cifre arabe ha 2 punti di codice Unicode. Ad esempio 1 è definito come U + 0661 e come U + 06F1.

Quale dovrei usare?

È stato utile?

Soluzione

Secondo il classifiche codice , U + 0660 .. U + 0669 sono DIGIT arabo e indi, valori da 0 a 9, mentre U + 06F0 .. U + 06F9 sono estese valori digitali arabo e indi 0 a 9.

Nel libro 3.0 Unicode (5.2 è la versione corrente, ma queste cose non cambiano molto previa programmazione), l'U + 066n serie di glifi sono contrassegnati 'cifre arabo e indi,' e la serie U + 06Fn di glifi sono contrassegnati 'orientali cifre arabo-indiane (persiano e urdu)'. Si rileva inoltre:

  • U + 06F4 - 'diversi glifi in persiano e l'urdu'
  • U + 06F5 - 'persiano e l'urdu quota glifo diversa dall'arabo'
  • U + 06F6 - 'glifo persiano diversa dall'arabo'
  • U + 06F7 - 'Urdu glifo diversa dall'arabo'

Per fare un confronto:

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

In alternativa, ampliata facendo le informazioni in un titolo:

U + 066n: 0123456789

U + 06Fn: 0123456789

o

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

(Se è possibile vedere una di queste, e come chiaramente si differenziano può dipendere dal vostro browser e i font installati sul computer tanto quanto qualsiasi altra cosa che può vedere la differenza il 4 e 6 in modo chiaro;. 5 sembra molto lo stesso in entrambi.)

In base a queste informazioni, se si sta lavorando con l'arabo dal Medio Oriente, utilizzare la U + 066n serie di cifre; se si sta lavorando con l'urdu persiano o, utilizzare la serie U + 06Fn di cifre. Come applicazione Unicode, è necessario accettare entrambi i set di codici di cifre come validi (ma si potrebbe guardare di traverso una sequenza che mescola le due serie di cifre - o si potrebbe lasciare bene da solo).

Altri suggerimenti

In generale non si deve hard-code, quali informazioni nell'applicazione.

  • Su Windows è possibile utilizzare GetLocaleInfo con LOCALE_SNATIVEDIGITS.
  • Su Mac CFNumberFormatterCopyProperty con kCFNumberFormatterZeroSymbol.
  • O usare qualcosa come ICU .

Ci sono paesi arabi che non utilizzano le cifre arabo e indi, per impostazione predefinita. Quindi non v'è alcuna mappatura diretta dicendo Arabo -.> Cifre arabo e indi,

E l'utente potrebbe aver cambiato le impostazioni di default nel pannello di controllo in ogni caso.

Quale codice preferisci per rappresentare il numero 4, U + 0664 o U + 06F4?

(4 o 4)?

Per essere coerenti, lasciare che questa guida scelta che codifica utilizzato per 1, 2, e gli altri codici duplicati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top