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

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

  •  16-09-2019
  •  | 
  •  

Вопрос

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

Какой из них мне следует использовать?

Это было полезно?

Решение

В соответствии с кодовые диаграммы, 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:۰۱۲۳۴۵۶۷۸۹

Или:

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

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

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

Другие советы

Как правило, вам не следует жестко кодировать такую информацию в своем приложении.

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

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

И пользователь, возможно, все равно изменил настройки по умолчанию на панели управления.

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

(٤ или ۴ )?

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top