Ответ 1
Это хорошее начало: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборах символов (без отговорок!)
Может ли кто-нибудь дать мне краткие определения
Я не получаю ссылки на wikipedia или невероятные подробности, а также краткую информацию о том, как и почему возникли огромные изменения в Unicode и почему вы должны заботиться как программист.
Это хорошее начало: Абсолютный минимум Каждый разработчик программного обеспечения Абсолютно, положительно должен знать о Unicode и наборах символов (без отговорок!)
Если вы хотите действительно краткое введение: Unicode за 5 минут
Или, если вы используете однострочные:
Почему вас это волнует? Потому что, не зная, что набор символов и кодировка используются, вы действительно не знаете, какие символы представляет данный поток байтов. Например, байт 0xDE может кодировать
Как и связанный со ссылкой Joel one, у меня есть моя собственная статья, которая смотрит на нее с точки зрения .NET, просто для разнообразия...
Здесь прочитайте это замечательное объяснение от самого Джоэла.
Да, я понял кое-что, но это может быть неправильно, однако это помогло мне понять это.
Позвольте просто взять текст. Он хранится в барах компьютеров как серия байтов, кодовая страница - это просто таблица сопоставления между байтами и символами, которые вы и я читаем. Итак, что-то вроде блокнота поставляется вместе со своей кодовой страницей и переводит байты на ваш экран, и вы видите кучу мусора, перевернутые вопросительные знаки и т.д. Это не значит, что ваши данные искажены только тем, что приложение, читающее байты, не использует правильные кодовая. Некоторые приложения более умны в обнаружении правильной кодовой страницы для использования, чем другие, а некоторые потоки байтов в памяти содержат спецификацию, которая обозначает знак байтового байта, и это может объявить правильную кодовую страницу для использования.
UTF7, 8 16 и т.д. - все это разные кодовые страницы, использующие разные форматы.
Тот же файл, который хранится в байтах с использованием разных кодовых страниц, будет иметь другой размер файла, поскольку байты хранятся по-разному.
Они также действительно не отличаются от окон 1252, как просто другой кодовой страницы.
Для лучшего умного ответа попробуйте одну из ссылок.
Другие уже указали достаточно хорошие ссылки для начала. Я не перечисляю настоящий путеводитель по Dummy, а некоторые указатели на странице консорциума Unicode. Вы найдете еще несколько причин для использования разных кодировок на страницах консорциума Unicode.
Часто задаваемые вопросы Unicode - достаточно хорошее место для ответа на некоторые (не все) ваши запросы.
Более сжатый ответ на вопрос о том, почему существует Unicode, присутствует в разделе Newcomer на веб-сайте Unicode:
Unicode предоставляет уникальный номер для каждого персонажа, независимо от того, что платформа, независимо от того, что программа, независимо от того, какой язык.
Что касается технических причин использования UTF-8, UTF-16 или UTF-32, ответ лежит в Техническое введение в Unicode
UTF-8 популярен для HTML и подобных протоколы. UTF-8 - это способ преобразование всех символов Unicode в кодирование переменной длины байт. Он имеет то преимущество, что Символы Unicode, соответствующие знакомый набор ASCII имеет одинаковые байтов как ASCII, и что Unicode символы, преобразованные в UTF-8, могут использоваться с большим количеством существующего программного обеспечения без обширной перезаписи программного обеспечения.
UTF-16 популярен во многих средах которые должны сбалансировать эффективный доступ персонажам с экономичным использованием место хранения. Он достаточно компактен и все используемые символы в один 16-разрядный блок кода, тогда как все остальные символы доступны через пары 16-разрядных блоков кода.
UTF-32 популярен там, где память это не проблема, но фиксированная ширина, одиночная доступ кодовых блоков к символам желательно. Каждый символ Юникода закодированный в одном 32-битном блоке кода при использовании UTF-32.
Все три формы кодирования нуждаются в большинстве 4 байта (или 32 бита) данных для каждого характер.
Общее правило большого пальца - использовать UTF-8, когда преобладающие языки, поддерживаемые вашим приложением, говорят к западу от реки Инд, UTF-16 для противоположной (к востоку от Инда) и UTF-32, когда вы заинтересованы об использовании символов с равномерным хранением.
Кстати, UTF-7 не является стандартом Unicode и был разработан в первую очередь для использования в почтовых приложениях.