2010-09-17 3 views
6

Я знаю, что юникод содержит все символы из большинства мирских афабит ... но что насчет цифр? Являются ли они частью юникода или нет? Я не смог найти прямой ответ. СпасибоНациональные (не арабские) цифры в Юникоде?

+1

Я думаю, что это хороший вопрос. Предположим, мы делаем калькулятор, тогда результат 12 + 78 будет таким же, как 12 + 78 – Thunder

ответ

10

Как уже говорилось, индо-арабские цифры (0,1, .., 9) включены в Unicode, унаследованные от ASCII. Если вы говорите о представлении чисел на других языках, ответ по-прежнему да, они также являются частью Unicode.

//numbers (0-9) in Malayalam (language spoken in Kerala, India) 
൦ ൧ ൨ ൩ ൪ ൫ ൬ ൭ ൮ ൯ 
//numbers (0-9) in Hindi (India's national language) 
० १ २ ३ ४ ५ ६ ७ ८ ९ 

Вы можете использовать \p{N} или \p{Number} в регулярном выражении, чтобы соответствовать любому виду numeric character in any script.

Этот номер document (Страница-3) описывает коды кода Unicode для цифр Малаялам.

+1

Хотя '\ p {N}' или '\ p {Number}', похоже, работает для многих локалей (малаялам, хинди, арабский), он не работает на некоторых типах. Например, [японский] (http://en.wikipedia.org/wiki/Japanese_numerals), [иврит] (http://en.wikipedia.org/wiki/Hebrew_numerals), китайский и некоторые другие терпят неудачу. – bovine

1

Да, они - коды 0030 до 0039, как вы можете видеть, например. на decodeunicode.org

btw, codepoints 0000-007E такие же, как ASCII (0-127, 128+ больше не ASCII), поэтому все, что вы можете найти в ASCII, вы можете найти в Unicode.

+1

. Обратите внимание, что в unicode содержится намного больше цифр, чем только 0-9 , –

+0

@ Хэнс Кесттинг: Действительно, например. индексы и надстрочные индексы: http://www.decodeunicode.org/en/superscripts_and_subscripts, древнегреческие цифры: http://www.decodeunicode.org/en/ancient_greek_numbers и др. – Piskvor

1

Да, я думаю так: Information Taken From Here

U+0030 0 30 DIGIT ZERO 
U+0031 1 31 DIGIT ONE 
U+0032 2 32 DIGIT TWO 
U+0033 3 33 DIGIT THREE 
U+0034 4 34 DIGIT FOUR 
U+0035 5 35 DIGIT FIVE 
U+0036 6 36 DIGIT SIX 
U+0037 7 37 DIGIT SEVEN 
U+0038 8 38 DIGIT EIGHT 
U+0039 9 39 DIGIT NINE 
1

Вы можете ответить на этот вопрос сами: если бы они не были частью Unicode, это будет довольно резко уменьшить полезность Unicode, вы не думаете?

В принципе, любой текст, который должен использовать цифры, не может быть представлен с использованием кодовых точек Юникода. (Предполагается, что вы не переключаетесь между различными кодировками символов в одном тексте: я не знаю ни одного языка программирования/программирования, который поддерживает это, и не без оснований.)

Если такие вопросы обрезаются вам плохо нужно читать The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) от Джоэла Спольского. Шутки в сторону. Пойдите, прочитайте это.

+0

Ну, так как многие языки используют арабские числа (напр.), Я не был уверен, что они не взяты из ASCII. – Petr

+0

@Petr: Как я уже сказал, вы не можете переключать кодировку в середине текста! «Взято из ASCII», таким образом, не имеет смысла. Весь текст, каждый символ, должен быть представлен в Unicode. –

+0

На самом деле вы, скорее всего, будете использовать программное обеспечение, которое позволит вам «переключаться между разными кодировками символов в одном тексте» * прямо сейчас * - ISO 2022 - это в основном метакодирование, которое позволяет переключаться между субкодированием через escape-последовательности, и поддерживается всеми распространенными веб-браузерами. –

3

Вкратце: да, конечно. Есть три категории в UNICODE, содержащие различные представления цифр и чисел:

  • Количество, десятичного знака (characters) - например, Арабский, тайский, цифры Деванагари;
  • Номер, Письмо (characters) - например, Римские цифры;
  • Номер, Прочие (characters) - например, фракции.
Смежные вопросы