В чем разница между ASCII и Unicode?



могу ли я узнать точную разницу между Unicode и ASCII?



ASCII имеет в общей сложности 128 символов (256 в расширенном наборе).



есть ли спецификация размера для символов Юникода?

4165   7  

7 ответов:

ASCII определяет 128 символов, которые соответствуют числам 0-127. Юникод определяет (менее) 221 символы, которые, аналогично, сопоставляются с числами 0-221 (хотя не все номера в настоящее время назначены, а некоторые зарезервированы).

Unicode является надмножеством ASCII, и числа 0-128 имеют то же значение в ASCII, что и в Unicode. Например, число 65 означает "Латинская столица 'A'".

потому что символы Юникода не как правило, помещается в один 8-битный байт, существует множество способов хранения символов Юникода в байтовых последовательностях, таких как UTF-32 и UTF-8.

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

ASCII, происхождение

Как указано в других ответах, ASCII использует 7 бит для представления символа. Используя 7 бит, мы можем иметь максимум 2^7 (=128) различных комбинаций*. Это означает, что мы можем представить 128 символов.

подождите, 7 биты? Но почему не 1 байт (8 бит)?

последний бит (8) используется для избежания ошибок как бит четности. Это было актуально много лет назад.

большинство символов ASCII являются печатными символами алфавита, такими как abc, ABC, 123,?&!, прием. Остальные символы например возврата каретки, перевода строки, tab и др.

смотрите ниже двоичное представление нескольких символов в ASCII:

0100101 -> % (Percent Sign - 37)
1000001 -> A (Capital letter A - 65)
1000010 -> B (Capital letter B - 66)
1000011 -> C (Capital letter C - 67)
0001101 -> Carriage Return (13)

Смотрите полную таблицу ASCII здесь.

ASCII предназначался только для английского языка.

что? Почему только английский? Так много языков там!

потому что в то время центр компьютерной индустрии находился в США время. Как следствие, им не нужно было поддерживать акценты или другие знаки, такие как á, ü, ç, ñ, и т. д. (также известный как диакритические знаки).

ASCII Extended

10000010 -> é (e with acute accent - 130)
10100000 -> á (a with acute accent - 160)

имя для этого " ASCII расширен до 8 бит и не 7 бит, как раньше" можно было бы просто назвать "расширенным ASCII" или "8-битным ASCII".

Как @Tom указал в своем комментарии ниже нет такой вещи, как"расширенный ASCII тем не менее, это простой способ сослаться на этот 8-битный трюк. Существует много вариантов 8-битной таблицы ASCII, например,ISO 8859-1, также называемый ISO Latin-1.

Unicode, The Rise

ASCII Extended решает проблема для языков, которые основаны на латинском алфавите... а как насчет других, нуждающихся в совершенно другом алфавите? Греческий? Русский? Китайский и тому подобное?

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

вы не можете сохранить текст на жесткий диск как "Unicode". Юникод-это абстрактное представление текста. Вам нужно "закодировать" это абстрактное представление. Вот где кодирование вступает в игру.

кодировки: UTF-8 vs UTF-16 vs UTF-32

ответ делает довольно хорошую работу по объяснению основ:

  • UTF-8 и UTF-16 переменной длины кодировки.
  • в UTF-8 символ может занимать не менее 8 бит.
  • In UTF-16, длина символа начинается с 16 бит.
  • UTF-32 представляет собой кодировку фиксированной длины 32 бит.

UTF-8 использует набор ASCII для первых 128 символов. Это удобно, потому что это означает, что текст ASCII также действителен в UTF-8.

Мнемоника:

  • UTF -8: минимум 8 бит.
  • UTF -16: минимум 16 бит.
  • UTF -32: минимум и максимум 32 бит.

Примечание:

почему 2^7?

Это очевидно для некоторых, но на всякий случай. У нас есть семь доступных слотов, заполненных либо 0, либо 1 (Двоичный Код). Каждый может иметь две комбинации. Если у нас есть семь мест, мы 2 * 2 * 2 * 2 * 2 * 2 * 2 = 2^7 = 128 комбинаций. Подумайте об этом как о кодовом замке с семью колесами, каждое колесо имеет два номера только.

источник: Википедия и это большое сообщение в блоге.

ASCII имеет 128 кодовых точек, от 0 до 127. Он может поместиться в один 8-битный байт, значения от 128 до 255, как правило, используются для других символов. С несовместимыми выборами, вызывая страницу код катастрофы. Текст, закодированный на одной кодовой странице, не может быть правильно прочитан программой, которая предполагает или угадывает другую кодовую страницу.

Unicode пришел, чтобы решить эту катастрофу. Версия 1 началась с 65536 кодовых точек, обычно закодированных в 16 битах. Позднее расширенной в версии 2 до 1,1 млн. кодовых точек. Текущая версия 6.3, используя 110,187 из доступных 1,1 миллиона кодовых точек. Это больше не вписывается в 16 бит.

Кодирование в 16 битах было распространено, когда появился v2, используемый, например, операционными системами Microsoft и Apple. И языковые среды выполнения, такие как Java. Спецификация v2 придумала способ отображения этих 1,1 миллиона кодовых точек в 16-битные. Кодировка под названием UTF-16, кодировка переменной длины, в которой одна кодовая точка может принимать 2 или 4 байта. Исходные кодовые точки v1 занимают 2 байта, добавленные-4.

еще одна кодировка переменной длины, которая очень распространена, используется в операционных системах и инструментах *nix-UTF-8, кодовая точка может занимать от 1 до 4 байт, исходные коды ASCII занимают 1 байт, остальные занимают больше. Единственная кодировка без переменной длины-UTF-32, занимает 4 байта для кодовой точки. Не часто используется, так как это довольно расточительно. Есть и другие, такие как UTF-1 и UTF-7, широко игнорируемый.

проблема с кодировками UTF-16/32 заключается в том, что порядок байтов будет зависеть от конечности машины, которая создала текстовый поток. Поэтому добавьте в смесь UTF-16BE, UTF-16LE, UTF-32BE и UTF-32LE.

наличие этих различных вариантов кодирования в некоторой степени возвращает катастрофу кодовой страницы, а также горячие дебаты среди программистов, выбор UTF является "лучшим". Их связь с операционной системой по умолчанию в значительной степени рисует линии. Один счетчик - это определение спецификации, метка порядка байтов, специальная кодовая точка (U+FEFF, пространство нулевой ширины) в начале текстового потока, которая указывает, как кодируется остальная часть потока. Он указывает как кодировку UTF, так и endianess и является нейтральным для механизма рендеринга текста. К сожалению, это необязательно, и многие программисты заявляют о своем праве опустить его, поэтому несчастные случаи все еще довольно распространены.

ASCII имеет 128 кодовых позиций, выделенных для графических символов и управляющих символов (управляющих кодов).

Unicode имеет 1,114,112 кодовых позиций. Около 100 000 из них в настоящее время были выделены символам, и многие кодовые точки были сделаны постоянно нехарактерными (т. е. никогда не использовались для кодирования какого-либо символа), и большинство кодовых точек еще не назначены.

единственное, что есть у ASCII и Unicode в общей являются: 1) Они характер коды. 2) 128 первых кодовых позиций Юникода были определены как имеющие те же значения, что и в ASCII, за исключением того, что кодовые позиции управляющих символов ASCII просто определены как обозначающие управляющие символы, с именами, соответствующими их именам ASCII, но их значения не определены в Юникоде.

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

Unicode как таковой определяет только "логический размер" символов: каждый символ имеет кодовый номер в определенном диапазоне. Эти кодовые номера могут быть представлены с использованием различных кодировок передачи, а также внутри память, символы Юникода обычно представлены с использованием одного или двух 16-разрядных количеств на символ, в зависимости от диапазона символов, иногда с использованием одного 32-разрядного количества на символ.

java обеспечивает поддержку Unicode т. е. он поддерживает все мировые алфавиты. Следовательно, размер char в java составляет 2 байта. И диапазон от 0 до 65535.

enter image description here

ASCII и Unicode - это две кодировки символов. В основном, это стандарты о том, как представлять разностные символы в двоичном формате, чтобы их можно было записывать, хранить, передавать и читать на цифровых носителях. Основное различие между ними заключается в том, как они кодируют символ и количество битов, которые они используют для каждого. ASCII первоначально использовал семь битов для кодирования каждого символа. Это было позже увеличено до восьми с расширенным ASCII, чтобы решить очевидную неадекватность оригинальный. В отличие от этого, Unicode использует переменную программу кодирования битов, где вы можете выбрать между 32, 16 и 8-битными кодировками. Использование большего количества битов позволяет использовать больше символов за счет больших файлов, в то время как меньшее количество битов дает вам ограниченный выбор, но вы экономите много места. Использование меньшего количества битов (например, UTF-8 или ASCII), вероятно, будет лучше, если вы кодируете большой документ на английском языке.

одна из основных причин, почему Unicode была проблема возникла из-за многих нестандартных расширенных Программы ASCII. Если вы не используете распространенную страницу, которая используется Microsoft и большинством других компаний-разработчиков программного обеспечения, то вы, вероятно, столкнетесь с проблемами, когда ваши символы будут отображаться как поля. Unicode практически устраняет эту проблему, так как все кодовые точки символов были стандартизированы.

еще одним важным преимуществом Unicode является то, что на его максимуме он может вместить огромное количество символов. Из-за этого Unicode в настоящее время содержит большинство письменных языков и все еще есть место для еще большего. Это включает в себя типичные сценарии слева направо, такие как английский и даже справа налево, такие как арабский. Китайский, японский, и многие другие варианты также представлены в Юникоде. Так что Юникод не будет заменен в ближайшее время.

чтобы поддерживать совместимость со старым ASCII, который уже широко использовался в то время, Unicode был разработан таким образом, что первые восемь битов соответствовали самой популярной странице ASCII. Так что если вы открываете ASCII-кодированный файл с Unicode, вы все равно получите правильные символы, закодированные в файле. Это облегчило принятие Unicode, поскольку это уменьшило влияние принятия нового стандарта кодирования для тех, кто уже использует ASCII.

резюме:

1.ASCII uses an 8-bit encoding while Unicode uses a variable bit encoding.
2.Unicode is standardized while ASCII isn’t.
3.Unicode represents most written languages in the world while ASCII does not.
4.ASCII has its equivalent within Unicode.

взято из: http://www.differencebetween.net/technology/software-technology/difference-between-unicode-and-ascii/#ixzz4zEjnxPhs

ASCII определяет 128 символов, так как Unicode содержит репертуар из более чем 120 000 символов.

Comments

    Ничего не найдено.