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

Почему существуют разные типы кодирования?

Это вопрос о нобе, но я хочу знать, почему существуют разные типы кодирования и каковы их различия (например, ASCII, utf-8 и 16, base64 и т.д.).

4b9b3361

Ответ 1

Причин многих я верю, но главное: "Сколько символов вам нужно отображать (кодировать)?" Если вы живете в США, например, вы можете пойти довольно далеко с ASCII. Но во многих графствах нам нужны такие символы, как ä, å, ü и т.д. (Если SO был только ASCII или вы пытаетесь прочитать этот текст как текст в кодировке ASCII, вы увидите некоторые странные символы в местах ä, å и ü. ) Подумайте также о Китае, Японии, Таиланде и других "экзотических" счетах. Эти странные фигуры на фотографиях, которые вы, возможно, видели во всем мире, могут быть буквами, а не симпатичными.

Что касается различий между различными типами кодирования, вам необходимо увидеть их спецификацию. Здесь что-то для UTF-8.

Я не знаком с UTF-16. Вот некоторая информация о различиях.

Base64 используется, когда необходимо кодировать двоичные данные, которые необходимо сохранить и передать на носители, предназначенные для обработки текстовых данных. Если вы когда-либо делали somesort системы электронной почты с PHP, вы, вероятно, столкнулись с Base64.

Короче: поддержка локализации пользовательского интерфейса компьютерной программы на разных языках. (Языки программирования по-прежнему в основном состоят из символов, найденных в кодировке ASCII, хотя, например, в Java можно использовать кодировку UTF-8 в именах переменных, а файл исходного кода обычно хранится как нечто иное, чем текст в кодировке ASCII, например UTF- 8).

Вкратце vol.2: Всегда, когда разные люди пытаются решить какую-либо проблему с определенной точки зрения (или даже без какой-либо точки зрения, если это возможно), результаты могут быть совершенно разными. Цитата из статьи Joel unicode (ссылка ниже): "Поскольку у байт есть место для до восьми бит, много людей додумались," черт, мы можем использовать коды 128-255 для наших собственных целей ". Проблема была, много люди имели эту идею в то же время, и у них были свои идеи о том, что должно происходить там, где в пространстве от 128 до 255".

Спасибо Иоахиму и tchrist за всю информацию и обсуждение. Вот две статьи, которые я только что прочитал. (Обе ссылки находятся на странице, с которой я связан ранее). Я забыл большую часть материала из статьи Джоэля, так как я читал ее несколько лет назад. Надеюсь, хорошее введение в тему. Марк Дэвис идет немного глубже.

Ответ 2

Настоящая причина, по которой существует так много вариантов, заключается в том, что консорциум Unicode появился слишком поздно.

В начале памяти и хранения было дорого и использование более 8 (или иногда только 7) бит памяти для хранения одного символа считалось чрезмерным. Таким образом, почти весь текст хранился с использованием 7 или 8 бит на символ. Очевидно, что 8 бит недостаточно памяти для представления символов всех человеческих языков. Этого едва хватает, чтобы представлять большинство символов, используемых на одном языке (и для некоторых языков даже это невозможно). Поэтому многие различные кодировки символов предназначены для того, чтобы разные языки (английский, немецкий, греческий, русский,...) кодировали свои тексты в 8 бит на символы. В конце концов, единственный текстовый файл (и обычно даже отдельная компьютерная система) будет использоваться только на одном языке, верно?

Это привело к ситуации, когда не было единого согласованного сопоставления символов с номерами любого типа. Много разных, несовместимых решений, где производилось, и никакого реального централизованного контроля не существовало. Некоторые компьютерные системы использовали ASCII, другие использовали EBCDIC ( или более точно: один из многих вариантов EBCDIC), ISO-8859- * (или одна из его многих производных) или любой большой список кодировок, которые сейчас почти не слышны.

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

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

В наши дни, если вы хотите представить текст, лучше всего использовать одно из нескольких кодировок, которые могут представлять все символы Unicode. UTF-8 и UTF-16 вместе должны хватить на 99% всех случаев использования, UTF-32 охватывает почти все остальные. И просто чтобы быть ясным: все кодировки UTF- * могут кодировать все допустимые символы Юникода. Но из-за того, что UTF-8 и UTF-16 являются кодировками переменной ширины, они могут быть не идеальными для всех случаев использования. Если вам не нужно иметь возможность взаимодействовать с устаревшей системой, которая не может обрабатывать эти кодировки, в наши дни редко бывает что-то выбирать.

Ответ 3

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