Кодировка UTF-8 переводит массив байтов (8-битные числа) в строку (или наоборот). То есть существует соответствие между «числами» и «символами». Набор символов больше, чем набор символов ASCII, например, é является частью UTF-8, но не является частью ASCII.
Кодировка Quoted-Prinable преобразует массив байтов (8-битное число) в последовательность символов ASCII (фактически ее подмножество).
Таким образом, комбинируя оба, вы можете «кодировать» строку UTF-8 в последовательность (подмножество) символов ASCII (строка ASCII).
То же самое можно сделать с другими кодировками (например, ISO-8859-1). Таким образом, вам нужно иметь обе информации:
- Данная строка ASCII является для печати в кавычках .
- Полученный байтовый массив представляет собой строку , имеющую кодировку UTF-8 .
Декодирование котируемой-печатной формы, таким образом, состоит из двух шагов:
Создание байтового массива, скажем, байтов [], через правила печати в кавычках, т.е.
- Подстрока = NM отображается в байтовый NM (где NM - шестнадцатеричный) ("N * 16 + M")
- Любой другой символ отображается в его байт ASCII.
(Обратите внимание, что подобное q-кодированное слово имеет дополнительное отображение для _ в пробел)
Затем интерпретируйте байтовый массив как строку UTF-8.