1: Ascii - это просто кодировка - действительно простая кодировка.Это буквально просто положительный конец байта со знаком (0 ... 127), сопоставленного с символами и управляющими кодами.
См. https://www.ascii.codes/, чтобы просмотреть полный набор и проверить символы.
Определенно существуют алгоритмы кодирования для преобразования строк ascii в и из строк в других кодировках, но для записи или чтения строк ascii не требуется алгоритм сжатия / распаковки, как для utf8 или utf16, если выподразумевается.
2: LATIN-1 также не является сжатой (обычно называемой 'переменной шириной') кодировкой, поэтому для входа и выхода из нее не требуется никакого алгоритма.
См. https://kb.iu.edu/d/aepu для хорошего описания LATIN-1 концептуально и каждого персонажа в наборе.Как и многие кодировки, его первые 128 слотов просто ascii.Как и ascii, его размер составляет 1 байт, но это без знака байт, поэтому после последнего символа ascii (DEL / 127) LATIN1 добавляет еще 128 символов.
Как и при любом преобразовании изкодирование одной строки в другую, есть алгоритм, специально разработанный для этого преобразования.
3: Опять же, кодировки Unicode - это просто кодировки.Но они все сжаты, кроме utf32.Поэтому, если вы не работаете с utf32, всегда есть шаг сжатия / распаковки, необходимый для их записи и чтения.
Примечание: При работе со строками utf32 есть одна нелинейная странность, которую необходимо учитывать ...комбинируя персонажей.Технически это еще один тип сжатия, так как они экономят пространство, не давая кодовую точку каждой возможной комбинации нескомбинированного символа и комбинирующего символа.Они «объединяют» несколько человек, но у них очень быстро заканчиваются слоты, если они все их делают.
4: Да.Алгоритмы сжатия / распаковки для сжатых кодировок Unicode как раз для этих кодировок.Они не будут работать для любой другой кодировки.
Думайте об этом как zip / unzip.Разархивировать что-либо, кроме файла или папки, в архиве, конечно, не получится.Это относится к вещам, которые не сжаты в первую очередь, а также к вещам, которые сжаты , но используют другой алгоритм сжатия (например, rar).
Я недавно написал сжатие utf8 и utf16 /декомпрессионный код для новой разрабатываемой кроссплатформенной библиотеки, и я могу с уверенностью сказать вам, если вы введете строку в кодировке Big5 в мой метод, написанный специально для распаковки utf8 ... не только она не будет работать, но и может привести к краху.
Re: ваш вопрос "Hello World" ... Обратитесь к моему ответу на ваш второй вопрос о LATIN-1.Для перехода из ascii в LATIN-1 преобразование не требуется, поскольку первые 128 символов (0 ... 127) в LATIN-1 равны ascii.Если вы конвертируете из LATIN-1 в ascii, то же самое верно для нижней половины LATIN-1, но если в строке есть какой-либо из символов, превышающих 127, это будет то, что называется «потерянным» / частичным преобразованиемили прямой отказ, в зависимости от вашего уровня терпимости к потерям.В вашем примере, однако, все символы в «Hello World» имеют одинаковые значения в обеих кодировках, так что они будут безошибочно преобразовываться в любом направлении.
Я практически ничего не знаю о Big5,но независимо от этого, не используйте utf-x algos для других кодировок.Каждый из них написан специально для 1 конкретной кодировки (или в случае преобразования: пара кодировок).
Если вам интересны алгоритмы сжатия / распаковки utf8 / 16веб-сайт Unicode - это то место, с которого вы должны начать (однако, будьте осторожны. Они не используют метафору сжатия / распаковки в своей документации) :
http://unicode.org
Вам, вероятно, больше ничего не понадобится.
... за исключением, может быть, достойного инструмента поиска кодовой точки: https://www.unicode.codes/
Вы можете свернуть свой собственный код на основе документации по Unicode или использоватьофициальная библиотека юникода:
http://site.icu -project.org / home
Надеюсь, это поможет.