UTF-7: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 11:
Первоначально UTF-7 был предложен в качестве экспериментального протокола в RFC 1642, A Mail-Safe Transformation Format of Unicode. Этот RFC устарел по сравнению с RFC 2152, информационным RFC, который никогда не был стандартом. Как заявлено в RFC 2152, «RFC не определяет интернет-стандарт любого типа». Несмотря на это, RFC 2152 цитируется как определение UTF-7 в списке кодировок IANA. Также UTF-7 не является стандартом Unicode. В Unicode Standard 5.0 перечислены только UTF-8, UTF-16 и UTF-32. Существует также модифицированная версия, указанная в RFC 2060, которая иногда идентифицируется как UTF-7.
 
Некоторые символы могут быть представлены непосредственно в виде одиночных байтов ASCII. Первая группа известна как «прямые символы» и содержит 62 алфавитно-цифровых символов и 9 символов пунктуации: ' ( ) , - . / : ?. Прямые символы безопасны при их буквальном отображении. Другая основная группа, известная как «необязательные прямые символы», содержит все другие печатные символы в диапазоне U+0020—U+007E за исключением ~ \ + и пробела. Использование необязательных прямых символов уменьшает размер и улучшает читаемость, но также увеличивает вероятность повреждения информации такими факторами, как плохо спроектированные почтовые шлюзы, и может потребовать дополнительного экранирования при использовании необязательных прямых символов в кодированных словах для полей заголовка.
 
Пробел, табуляция, возврат каретки и перевод строки также могут быть представлены непосредственно в виде одиночных байтов ASCII. Однако, если кодированный текст должен использоваться в электронной почте, необходимо соблюдать осторожность, гарантирующую, что для этих символов не потребуется дополнительной кодировки передаваемого контента, подходящей для электронной почты. Знак плюса + может быть закодирован как +-.
 
Другие символы должны быть сначала закодированы в UTF-16 (символы с кодами от U+10000 и выше будут закодированы в суррогатах) big-endian (старшие биты в конце), а затем модифицированы в коды Base64. Начало таких блоков из символов, закодированных в UTF-16 и модифицированных в Base64, обозначается знаком +. Конец блоков обозначается любым символом, который не входит в модифицирующий набор Base64. Если символ после модифицирования в Base64 является - (дефис-минусом ASCII), то он пропускается декодером, а декодирование возобновляется со следующего символа. В противном случае декодирование возобновляется с символом после Base64.
 
Также был введён 8BITMIME, чтобы уменьшить необходимость кодирования тел сообщений в 7-битном формате.