В чем разница между UTF-8 и ISO-8859-1?
В чем разница между UTF-8 и ISO-8859-1?
Ответ 1
UTF-8 - многобайтовая кодировка, которая может представлять любой символ Юникода. ISO 8859-1 является однобайтовой кодировкой, которая может представлять первые 256 символов Unicode. Оба кодируют ASCII точно так же.
Ответ 2
Википедия объясняет как разумно хорошо: UTF-8 vs Latin-1 (ISO-8859-1). Бывший - это кодирование с переменной длиной, последнее однобайтное кодирование с фиксированной длиной. Latin-1 кодирует только первые 256 кодовых символов набора символов Unicode, тогда как UTF-8 может использоваться для кодирования всех кодовых точек. На уровне физического кодирования только кодовые точки 0-127 кодируются одинаково; кодовые точки 128 - 255 различаются, становясь 2-байтовой последовательностью с UTF-8, тогда как они являются одиночными байтами с латиницей-1.
Ответ 3
UTF
UTF - это семейство многобайтовых схем кодирования, которые могут представлять Unicode, которые могут быть репрезентативными до 2 ^ 31 [примерно 2 миллиарда] символов. UTF-8 - это гибкая система кодирования, которая использует от 1 до 4 байтов для представления первых 2 ^ 25 [примерно 32 миллионов] кодовых точек.
Короче говоря: любой символ с кодовым обозначением/порядковым представлением ниже 127, так называемый 7-битный безопасный ASCII, представлен одной и той же 1-байтовой последовательностью, как и большинство других однобайтовых кодировок. Любой символ с кодовой точкой выше 127 представлен последовательностью из двух или более байтов, причем конкретная кодировка наилучшим образом объясняется здесь.
ISO-8859
ISO-8859 - это семейство однобайтовых схем кодирования, используемых для представления алфавитов, которые могут быть представлены в диапазоне от 127 до 255. Эти различные алфавиты определяются как "части" в формате ISO-8859-n, наиболее знакомыми из которых являются ISO-8859-1 aka 'Latin-1'. Как и в случае с UTF-8, 7-разрядный безопасный ASCII остается незатронутым независимо от используемого семейства кодировок.
Недостатком этой схемы кодирования является невозможность размещения языков, состоящих из более чем 128 символов, или для безопасного отображения более одного семейства символов за один раз. Кроме того, кодировки ISO-8859 вышли из-под контроля с ростом UTF. ИСО "Рабочая группа", ответственная за ее расформирование в 2004 году, оставив обслуживание до своего родительского подкомитета.
Ответ 4
ISO-8859-1 является устаревшим стандартом начиная с 1980-х годов. Он может содержать только 256 символов, поэтому подходит только для некоторых языков в западном мире. Даже для многих поддерживаемых языков некоторые символы отсутствуют. Если вы создадите текстовый файл в этой кодировке и попробуйте скопировать/вставить некоторые китайские символы, вы увидите странные результаты. Другими словами, не используйте его. Unicode занял весь мир, и UTF-8 в наши дни является стандартом, если у вас нет некоторых устаревших причин (например, заголовков HTTP, которые должны быть совместимы со всем).
Ответ 5
Моя причина для изучения этого вопроса была с точки зрения того, каким образом они совместимы. Latin1 charset (iso-8859) на 100% совместим для хранения в datastore utf8. Все символы ascii и extended-ascii будут храниться как однобайтовые.
Иными словами, от utf8 до Latin1 charset может работать или не работать. Если есть 2-байтовые символы (символы за пределами расширенного ascii 255), они не будут храниться в хранилище Latin1.
Ответ 6
С другой стороны, файлы, которые кодируют как кодировки unicode, так и ascii, поскольку они имеют в них байт 0xc0
, похоже, правильно считываются iso-8859-1. Предостережение состоит в том, что файл не должен содержать в нем символы Юникода.