HZ (кодировка символов) - HZ (character encoding)

Кодирование HZ
MIME / IANAHZ-GB-2312
Язык (и)Упрощенный китайский, английский, русский
СтандартRFC  1843
КлассификацияКодирование CJK, ASCII броня, кодирование с переменной шириной, кодирование с сохранением состояния
Преобразует / кодируетГБ 2312
ПредшествуетzW
ПреемникЦитата для печати, UTF-7, 8BITMIME

В Кодировка символов HZ[1] является кодирование из GB2312 который раньше обычно использовался в электронной почте и USENET проводки. Он был разработан в 1989 году Фунг Фунг Ли (Китайский : 李楓 峰) из Стэндфордский Университет, и впоследствии кодифицированный в 1995 году в RFC 1843.[2]

HZ, сокращение от Ханзи (упрощенный китайский : 汉字; традиционный китайский : 漢字; горит «Китайские иероглифы») кодирование было изобретено для облегчения использования китайских иероглифов в электронной почте, которая в то время допускала только 7-битные символы. Поэтому вместо стандартных управляющих последовательностей ISO 2022 (как в случае ISO-2022-JP ) или 8-битные символы (как в случае EUC ), код HZ использует только печатаемые 7-битные символы для представления китайских символов.

Он также был популярен в сетях USENET, которые в конце 1980-х - начале 1990-х годов, как правило, не позволяли передавать 8-битные символы или escape-символы.

История

HZ заменил более раннюю кодировку "zW", в которой целые строки помечались как текст GB2312, начиная с символов zW.[3]

Структура и использование

В системе кодирования HZ последовательности символов «~ {» и «~}» действуют как escape-последовательности; все, что находится между ними, интерпретируется как китайский, закодированный в GB2312 (старшие биты игнорируются). Вне escape-последовательностей предполагается, что символы ASCII.

Пример поможет проиллюстрировать взаимосвязь между GB2312, EUC-CN, и код HZ:

Различные формы кода GB2312 (0xD2BB) для символа «一» (один)
ФормаКодС escape-последовательностямиЗамечания
Kuten / Qūwèi / 区 位 форма5027Зона / палата / ряд (ку / цу /) 50, точка (десять / wèi /) 27
Форма ISO 20225216 3B160E16 5216 3B16 0F1650 + 32 = 82 = 5216
Форма EUC-CND216 BB16D216 BB165216 ∨ 8016 = D216
Форма HZ (стандартная)5216 3B167E16 7B16 5216 3B16 7E16 7D16Появляется как ~ {R; ~} без декодера HZ
Форма HZ (альтернативная)D216 BB167E16 7B16 D216 BB16 7E16 7D16Форма EUC, приемлемая по крайней мере для некоторых декодеров

Первоначально HZ был разработан для использования исключительно как 7-битный код. Однако, когда позволяют ситуации, escape-последовательности «~ {» и «~}» иногда окружают символы, представленные в EUC-CN; это альтернативное использование позволяет читать на китайском языке либо с помощью программного обеспечения декодера HZ, либо с помощью системы, которая понимает EUC-CN.

Кроме того, спецификация определяет, что:

  • последовательность «~~» должна рассматриваться как кодирующая один ASCII «~» и,
  • символ "~", за которым следует новая строка, следует отбросить.

Однако не все декодеры HZ следуют этим двум правилам.

Кодеры и декодеры HZ

Первый кодер и декодер HZ были написаны в 1989 году изобретателем кода для Unix Операционная система.[4]

В hztty программа, также для Unix операционной системы, также был одним из первых и одним из самых популярных декодеров HZ. Он отклоняется от спецификации в том, что он отображает escape-последовательности (то есть «~ {» и «~}»), и не обрабатывает специально «~~» и «~», за которыми следует новая строка. Вероятно, это было сделано для того, чтобы программное обеспечение, которое предполагает, что один символ занимает одну позицию экрана (на текстовом экране), могло работать правильно без изменений.

Поддержка на Майкрософт Виндоус пришло позже, и ряд сторонних "китайских систем" поддерживает ХЗ. Эти системы могут предоставлять возможность скрыть escape-последовательности.

Недостатки

Из-за его управляющих последовательностей, а также из-за того, что его escape-разделители представляют собой печатаемые символы в ASCII, довольно легко построить последовательности байтов атаки, которые возвращаются от HZ к Unicode и обратно. Таким образом, использование кодировки HZ рассматривается как подозрительное для программ защиты от вредоносных программ.[5][нужен лучший источник ]

использованная литература