Home

Page 39
Page 39
background image

последовательности произвольных байт еще не гарантирует правильного 
отображения текста, записанного символами национального алфавита. 
Таким   образом,  необходимо  ТАК  договориться  о  передаче  произвольных 

байтов,   чтобы   с   одной   стороны   в   заголовке   письме   при   этом   передавались 
только символы US-ASCII, а с другой стороны приемная сторона могла не только 
декодировать   полученные  ASCII  в   «полноценные»   байты,   но   и   правильно 
интерпретировать,   в   рамках   какой   кодовой   таблицы   отображать   на   экране 
символы национальных кодировок.

Для   решения   данной   задачи   применяется   следующий   синтаксис   для 

значения поля любого заголовка заголовка:

"=?" charset "?" encoding "?" encoded-text "?="

Т.е.,   при   необходимости   присвоить   некоторому   заголовку   значение, 

состоящее не только из US-ASCII символов, или только из не US-ASCII, значение 
после имени поля и двоеточия должно начинаться с набора знаков «=?» (без 
кавычек), после этого следует название той кодировки (соответствия байтов и 
знаков   национального   алфавита),   которая   должна   использоваться   для 
декодирования передаваемых далее байтов, после этого снова ставится «?» (без 
кавычек),   затем   указывается   применяемый   метод   кодирования   произвольных 
байтов в символы набора US-ASCII (таких методов может быть несколько), затем 
снова ставится символ «?» (без кавычек), после чего передается некий набор 
ASCII символов, который должен быть декодирован в соответствии с указанным 
методом кодирования. 

На   сегодняшний   день   существует   два   основных   метода   кодирования, 

позволяющие   передать   с   помощью   только   символов   набора  US-ASCII 
произвольные значения байтов:

• «Q» кодирование, или кодирование по методу Quoted-Printable
• «B» кодирование, или кодирование по методу BASE64

Рассмотрим   эти   методы.   Начнем   с  Q  кодирования.   Данный   метод 

кодирования применяется в том случае, если необходимо передать отдельные 
символы, не принадлежащие набору US-ASCII в потоке символов US-ASCII, т.е. 
данный   метод   кодирования   хорошо   для   передачи   отдельных   символов 
национальных   алфавитов.   Суть   метода   кодирования  Quoted-Printable  в 
следующем: при необходимости передать символ набора  US-ASCII  этот символ 
просто передается без всяких ухищрений, при необходимости передать символ, 
не   входящий   в   набор  US-ASCII,   символ   передается   следующим   образом: 
передается знак «=» (без кавычек), после чего передается шестнадцатеричное 
значение байта двумя цифрами. Очевидно, при использовании данного метода 
кодирования   могут   быть  проблемы   с  передачей   знака   «=».   Этот   знак  так  же 
необходимо   передавать   кодированным,   т.е.   «=»   передается   как   =3D,   кроме 
того,   при   необходимости   передать   пробел   его   тоже   необходимо   кодировать, 
либо =20, либо специально для пробела зарезервировано использование знака 
«_», что не желательно, но все же может быть использовано. Почему говорят, 
что данный метод кодирования хорош в том случае, если необходимо передать 
лишь отдельные не ASCII символы? Это вполне очевидно: для передачи одного 
не  ASCII  символа он преобразуется в 3 байта, передаваемых по линии связи, 
следовательно, для передачи длинных последовательностей не  ASCII  символов 
такой метод кодирования не экономичен, так как приводит в утроению объема 
передаваемой   информации,   в   таком   случае   используется   второй   метод,  B 
кодирование, к рассмотрению которого мы сейчас и переходим.

Всего   существует   256   различных   значений   байтов,   которые   необходимо 

иметь   возможность   передать.   Но   для   передачи   этих   различных   256   байтов 


Copyright © 2022 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.