Подтвердить что ты не робот

В Unicode, почему существуют два представления для арабских цифр?

Я читал спецификацию Unicode @Wikipedia (Арабский Юникод) и я вижу, что каждая арабская цифра имеет 2 кодовых обозначения Unicode. Например, 1 определяется как U + 0661 и как U + 06F1.

Какой я должен использовать?

4b9b3361

Ответ 1

Согласно кодам U + 0660.. U + 0669 являются значениями ARABIC-INDIC DIGIT от 0 до 9, тогда как U + 06F0.. U + 06F9 - РАСШИРЕННЫЕ значения 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      ٩         ۹

(Независимо от того, видите ли вы их, и насколько четко они различаются, может зависеть ваш браузер и шрифты, установленные на вашем компьютере, как и все остальное. Я вижу разницу на 4 и 6: 5 выглядит много то же самое в обоих.)

Основываясь на этой информации, если вы работаете с арабским языком с Ближнего Востока, используйте серии цифр U + 066n; если вы работаете с персидским или урду, используйте номера цифр U + 06Fn. Как приложение Юникод, вы должны принять либо набор кодов в качестве действительных цифр (но вы можете посмотреть в последовательности, которая смешивает два набора цифр, или вы можете просто оставить в покое).

Ответ 2

В общем случае вы не должны жестко кодировать такую ​​информацию в своем приложении.

  • В Windows вы можете использовать GetLocaleInfo с LOCALE_SNATIVEDIGITS.
  • В Mac CFNumberFormatterCopyProperty с kCFNumberFormatterZeroSymbol.
  • Или используйте что-то вроде ICU.

Существуют арабские страны, которые по умолчанию не используют цифры на арабском языке. Таким образом, нет прямого сопоставления, говорящего по-арабски → Арабско-индийские цифры.

В любом случае пользователь мог бы изменить значения по умолчанию на панели управления.

Ответ 3

Какой код вы предпочитаете для представления числа 4, U + 0664 или U + 06F4?

(4 или 4)?

Чтобы быть последовательным, дайте этому руководству по выбору, какие коды вы используете для 1, 2 и других дубликатов.

Ответ 4

Well, thy look like this: ١ and ۱, so я assume that it doesn't matter much. My guess would be that they have different Unicode codes for the same numeral depending on it location. In Arabic, they do the same with letters: they look different when they are the last letter of a word or if they stand alone.

Edit: я just noted that the 4 look different in both sets: ٤ and ۴. I'm quite sure that in the Middle East (Jordan and Egypt), they use the first form (U-0664).