В Java, должно ли значение int символа называться его значением ASCII или значением Unicode - PullRequest
2 голосов
/ 04 февраля 2012

Я работаю над программой на Java, которая работает только с заглавными буквами.Во время некоторой обработки я использую значение int символов этих заглавных букв.Я понимаю, что значения заглавных букв одинаковы в Unicode и ASCII, но при обращении к этим int значениям следует ли мне говорить, что они являются значениями Unicode или ASCII?Я просто хочу убедиться, что я использую правильную терминологию с точки зрения языка.

Ответы [ 3 ]

2 голосов
/ 04 февраля 2012

Он должен называться единицей кода Unicode. Java char - это 16-битный код Unicode, в отличие от 32-битного кода Unicode (изначально предполагалось, что Unicode будет 16-битным) всегда будет принимать 16 бит, независимо от значения. ASCII является 7-битным (8, если учитывать бит 0 заполнения / проверки ошибок). Таким образом, этот термин применяется не полностью, даже если фактическое значение совпадает.

1 голос
/ 04 февраля 2012

Если символы будут когда-либо только ASCII, вы можете ссылаться на них как ASCII. В противном случае вам следует использовать термин Unicode, который, как вы заявляете, является надлежащим расширенным набором ASCII. Имейте в виду, что даже если вы относите к ним как ASCII, возможно, потребуется изменить кодировку , если вы отправляете их в нечто, что ожидает настоящий (на основе октетов) ASCII .

Если ваше программное обеспечение обрабатывает только кодовые точки в диапазоне ASCII (и смотрите ниже, это, как правило, не очень хорошая идея), гораздо проще сказать (пользователям или в документации) «значения ASCII», чем « Значения Unicode в диапазоне ASCII ": -)

На самом деле вводит в заблуждение , чтобы ссылаться на ваши значения как на кодовые точки Unicode в контексте работы с заглавными буквами, если вы обрабатываете только заглавные буквы в диапазоне ASCII.

Любое новое программное обеспечение в настоящее время должно быть написано с учетом Unicode, и что включает тот факт, что заглавные буквы не ограничены диапазоном ASCII.

Например, часть греческих символов нигде нет рядом с диапазоном ASCII, который имеет свойства верхнего и нижнего регистра. Файл SpecialCasing.txt показывает эти свойства, а также есть FAQ по теме.

0 голосов
/ 04 февраля 2012

Правильный и правильный термин в соответствии с Глоссарий Unicode для числового кода - это кодовая точка .Например:

  • Кодовая точка для DIGIT ONE равна 31 16 (49 10 ), обычно пишется U + 0031.
  • Кодовая точка для POUND SIGN - это U + 00A3
  • Кодовая точка для LATIN SMALL LETTER I WITH DIAERESIS - это U + 00EF.
  • Кодовая точка для GREEK SMALL LETTER MU - это U + 03BC.
  • Кодовая точка для LATIN SMALL LETTER F WITH DOT ABOVE - это U + 1E1F.
  • Кодовая точка для REPLACEMENT CHARACTER - это U + FFFD.
  • Кодовая точка для MUSICAL SYMBOL DOUBLE FLAT - это U +1D12B.
  • Кодовая точка для MATHEMATICAL ITALIC CAPITAL R - это U + 1D445.
  • Кодовая точка для EXTRATERRESTRIAL ALIEN - это U + 1F47D.
  • U + 100002 - назначенная кодовая точка в блоке Supplementary_Private_Use_Area_B.
  • Назначенное имя кодовой точки U + 0041 - LATIN CAPITAL LETTER A.
  • Назначенное имякодовая точка U + 1F47E равна ALIEN MONSTER.
  • Кодовая точка U + 0FFE не назначена и поэтому не имеет имени.

И т. д. и т. п.

...