[an error occurred while processing this directive] RFC[an error occurred while processing this directive] [an error occurred while processing this directive]

Понимая актуальность затронутой в этом документе информации, мы позволили себе отступить от принятой нами (изрядко, кстати, устаревшей) практики перевода документов вручную и воспользовались услугами Internet-переводчика Translate.ru. По причине срочности пришлось отказаться и от редактирования документа, который представлен в "первозданном" виде.

Если вы хотите включиться в разработку нового перспективного направления, выскажите свои мысли в форуме

Рабочая группа Сети М. Крайспина Рекста
для Комментариев: 4042 Панды, Программируя
Категорию: Информационный 1 апреля 2005
                           
UTF-9 и Эффективные Форматы Преобразования UTF-18 
Уникоуд

Статус Этой Записки
  Эта записка обеспечивает информацию для интернет-сообщества. 
  Это не определяет интернет-стандарт любого вида. 
  Распределение этой записки неограниченно.

Уведомление об авторском праве
  Copyright (C) The Internet Society (2005).

Резюме
  Международная Организация по Стандартизации 10646 определяет 
  большой набор символов, названный Универсальным 
  Набором символов (УКС), который охватывает большинство 
  всемирных устройств записи. Тот же самый набор кодепоинтс 
  определен Уникоуд, который далее определяет дополнительные 
  свойства характера и другие детали выполнения. Политикой 
  уместных комитетов стандартизации, изменения к Уникоуд и 
  поправкам и дополнениям к Международной Организации по 
  Стандартизации/МЕЖДУНАРОДНОЙ ЭЛЕКТРОТЕХНИЧЕСКОЙ КОМИССИИ 
  10646 следов друг друг, так, чтобы репертуары характера и 
  кодовые назначения пункта остались в синхронизации.
  Текущие форматы представления для Уникоуд (UTF-7, UTF-8, 
  UTF-16) не хранение и вычисление, эффективное на платформах, 
  которые используют 9 битов нонет как естественная единица 
  хранения вместо октета на 8 битов. 
  
  Этот документ описывает формат преобразования Уникоуд, 
  который использует в своих интересах нонет так, чтобы 
  формат был хранением и эффективным вычислением.

1. Введение
  Множество интернет-участков использует платформы, которые 
  не основаны на традиционном 8-битовом байте или октете. 
  Одна такая платформа - ПДП-10, который является основанным 
  на 36-битовом слове. На этих платформах, расточительно 
  представить данные в октетах, так как 4 бита оставляют 
  неиспользованными в каждом слове. 9-битовый нонет - 
  намного более заметное представление.
  Хотя эти платформы поддерживают стандарты ИТФ, многие 
  из этих платформ все еще используют представление текста, 
  основанное на семиразрядном байте,


Крайспин Информэйшнал [Страница 1]
РФК 4042 UTF-9 и UTF-18 1 апреля 2005
   
  который является только подходящим для [американского 
  ASCII] (хотя это использовалось для различной 
  Международной Организации по Стандартизации 10646 
  национальных вариантов).
  Чтобы максимизировать международную и многоязычную 
  способность к взаимодействию, ИАБ 
  рекомендовал ([ИАБ-СИМВОЛЬНЫЙ]), что [Международная 
  Организация по Стандартизации 10646], быть неплатежом 
  закодировала набор символов.
  Хотя другие форматы преобразования [УНИКОУД] существуют, и 
  очевидно могут использоваться на нонет-ориентируемых 
  машинах (наиболее особенно [UTF-8]), они переносят 
  существенные неудобства:
     [UTF-8] 
  требует, чтобы один - три октета представили кодепоинтс в 
  Основном Многоязычном Самолете (БМП), четыре октета, 
  чтобы представить [УНИКОУД] кодепоинтс вне БМП, и шести 
  октетов, чтобы представить не - [УНИКОУД] кодепоинтс. 
  Когда сохранено в нонетс, это приводит целых к четырем 
  потраченным впустую битам в характер [УНИКОУД].
     [UTF-16] 
  требует, чтобы хексейдсет представил кодепоинтс в БМП, и 
  двух хексейдсетс, чтобы представить [УНИКОУД] кодепоинтс 
  вне БМП. Когда сохранено в нонет парах, это приводит 
  целых к четырем потраченным впустую битам в характер 
  [УНИКОУД]. Этот формат преобразования требует, чтобы 
  сложные заместители представили кодепоинтс вне БМП, и 
  не может представить не - [УНИКОУД] кодепоинтс вообще.
     [UTF-7] 
  требует, чтобы один - пять семиразрядных байтов представили 
  кодепоинтс в БМП, и целых восемь семиразрядных байтов, 
  чтобы представить кодепоинтс вне БМП. Когда сохранено 
  в нонетс, это приводит целых к шестнадцати потраченным 
  впустую битам в характер. Этот формат преобразования 
  требует очень сложной и в вычислительном отношении дорогой 
  перемены и "измененный BASE64" обработка, и не может 
  представить не - [УНИКОУД] кодепоинтс вообще.
  В сравнении, UTF-9 использует один - два нонетс, чтобы 
  представить кодепоинтс в БМП, три нонетс, чтобы 
  представить [УНИКОУД] кодепоинтс вне БМП, и трех или 
  четырех нонетс, чтобы представить не - [УНИКОУД] 
  кодепоинтс. Нет никаких потраченных впустую битов, и 
  поскольку примеры в этом документе демонстрируют, 
  вычислительная обработка минимальна.
  Преобразование между [UTF-8] и UTF-9 является прямым, с 
  большинством сложности в обработке [UTF-8]. Надеется, 
  что будущие расширения к протоколам, типа СМТП разрешат 
  использование UTF-9 в этих протоколах между нонет 
  платформами без использования [UTF-8] как "на проводном" 
  формате.

Крайспин Информэйшнал [Страница 2]
РФК 4042 UTF-9 и UTF-18 1 апреля 2005
   
  Точно так же преобразование между [УНИКОУД] кодепоинтс 
  и UTF-18 также весьма просто. Хотя (как UCS-2) UTF-18 
  только представляет подмножество доступного [УНИКОУД] 
  кодепоинтс, это охватывает нечастные кодепоинтс, которые 
  в настоящее время назначаются в [УНИКОУД].

1.1. Соглашения, Используемые в Этом Документе
  Ключевые слова "ДОЛЖНЫ", "НЕ ДОЛЖЕН", "ТРЕБУЕМЫЙ", 
  "НЕ БУДЕТ", "БЫТЬ" "ДОЛЖЕН", "НЕ ДОЛЖЕН", "РЕКОМЕНДОВАННЫЙ", 
  "МОЧЬ", и "ДОПОЛНИТЕЛЬНЫЙ" в этом документе должны 
  интерпретироваться как описано в КОММУНИСТИЧЕСКОЙ 
  ПАРТИИ ВЕЛИКОБРИТАНИИ 14, РФК 2119 [КЛЮЧЕВЫЕ СЛОВА].

2. Краткий обзор
  UTF-9 кодирует [УНИКОУД] кодепоинтс в низких битах заказа 
  8 нонет, используя высокий бит заказа, чтобы указать 
  продолжение. Заместители не используются.
  [УНИКОУД] кодепоинтс в диапазоне U+0000 - U+00FF 
  ([американский ASCII] и латинский 1) представлены 
  единственным нонет; кодепоинтс в диапазоне U+0100 - 
  U+FFFF (остаток от БМП) представлены двумя нонетс; 
  и кодепоинтс в диапазоне U+1000 - U+10FFFF (остаток от 
  [УНИКОУД]) представлены тремя нонетс.
  Не - [УНИКОУД] кодепоинтс в [Международная Организация 
  по Стандартизации 10646] (то есть, кодепоинтс в 
  диапазоне 0x110000 - 0x7fffffff) может также быть 
  представлен в UTF-9 очевидным расширением, но это не 
  обсуждено далее, поскольку эти кодепоинтс были удалены 
  от [Международная Организация по Стандартизации 10646] 
  Международной Организацией по Стандартизации.
  UTF-18 кодирует [УНИКОУД] кодепоинтс в Основном 
  Многоязычном Самолете (БМП, самолет 0), Дополнительный 
  Многоязычный Самолет (СМП, самолет 1), Дополнительный 
  Идеографический Самолет (ГЛОТОК, самолет 2), и 
  Дополнительный Самолет Специального назначения (ССП, 
  самолет 14) в единственной 18-битовой ценности. Это 
  не кодирует самолеты 3, хотя 13, которые являются в 
  настоящее время неиспользованными; ни самолеты 15 или 
  16, которые являются частными местами.
  Обычно, UTF-9 и UTF-18 должны только использоваться в 
  контексте хранения на 9 битов и транспорта. Хотя 
  некоторые протоколы, например, [ПРОГРАММА ПЕРЕДАЧИ 
  ФАЙЛОВ], транспорт поддержки нонетс, текущий набор 
  протокола ИТФ является весьма несовершенным в этой 
  области. ИТФ убежден принять меры, чтобы улучшить 
  поддержку протокола ИТФ нонетс.

3. Определение UTF-9
  Поток UTF-9 представляет [Международную Организацию 
  по Стандартизации 10646] кодепоинтс использование 9 
  битов нонетс. Низкие 8 битов заказа нонет - октет, и 
  высокий бит заказа указывает продолжение.


Крайспин Информэйшнал [Страница 3]
РФК 4042 UTF-9 и UTF-18 1 апреля 2005
   
  UTF-9 не использует заместителей; следовательно ценность 
  UTF-16 должна быть преобразована в эквивалент UCS-4, 
  и U+D800 - U+DBFF никогда не передаются в UTF-9.
  Октеты [УНИКОУД] кодепоинт ценность тогда скопированы в 
  последовательный UTF-9 нонетс, начинающийся с наиболее - 
  существенного октета отличного от нуля. Все кроме 
  наименее существенного октета имеют набор бита 
  продолжения в связанном нонет.
  
  Примеры:
  
  Название UTF-9 Характера (в октальном)
  -----------------------------
  U+0041 ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА 101 
  ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА U+00C0 С СЕРЬЕЗНЫМИ 300 
  ГРЕЧЕСКИМИ АЛЬФАМИ ЗАГЛАВНОЙ БУКВЫ U+0391 403 221 
  U+611B
     541 33 
  ГОТИЧЕСКИХ ПИСЬМА U+10330 АХСА 401 403 60 
  ПРИЗНАКОВ U+E0041 ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА 416 400 101 
  U+10FFFD
   420 777 375 
  0x345ecf1b (ценность UCS-4 не в [УНИКОУД]) 464 536 717 33

4. Определение UTF-18
  Поток UTF-18 представляет [Международную Организацию 
  по Стандартизации 10646] кодепоинтс использование пары 
  9 битов нонетс, чтобы сформировать 18-битовую ценность.
  UTF-18 не использует заместителей; следовательно ценность 
  UTF-16 должна быть преобразована в эквивалент UCS-4, 
  и U+D800 - U+DBFF никогда не передаются в UTF-18.
  [УНИКОУД] кодепоинт ценности в диапазоне U+0000 - 
  U+2FFFF скопированы как та же самая ценность в ценность 
  UTF-18. [УНИКОУД] кодепоинт ценности в диапазоне 
  U+E0000 - U+EFFFF скопированы как ценности 0x30000 - 
  0x3ffff; то есть, эти ценности перемещены 0x70000. 
  Другие ценности кодепоинт не могут быть представлены в 
  UTF-18.
  
  Примеры:
  
  Название UTF-18 Характера (в октальном)
  -----------------------------
  U+0041 ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА 000101 
  ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА U+00C0 С СЕРЬЕЗНЫМИ 000300 
  ГРЕЧЕСКИМИ АЛЬФАМИ ЗАГЛАВНОЙ БУКВЫ U+0391 001621 
  U+611B
     060433 
  ГОТИЧЕСКИХ ПИСЬМА U+10330 АХСА 201460 
  ПРИЗНАКОВ U+E0041 ЛАТИНСКАЯ ЗАГЛАВНАЯ БУКВА 600101


Крайспин Информэйшнал [Страница 4]
РФК 4042 UTF-9 и UTF-18 1 апреля 2005

5. Типовые Рутины
5.1. [УНИКОУД] Кодепоинт к Преобразованию UTF-9
  Следующие рутины демонстрируют преобразование от UCS-4 
  до UTF-9. Для простоты, эти рутины не делают никакой 
  проверки законности. Рутины, используемые в заявлениях 
  ДОЛЖНЫ отклонить недействительные последовательности 
  UTF-9; то есть, первый нонет с ценностью 400 октальный 
  (0x100), или последовательности, которые приводят к тому, 
  чтобы выходить за пределы (превышающий 0x10ffff для 
  [УНИКОУД]), или кодепоинтс, используемого для заместителей 
  UTF-16.
  ; Возвратить ценность UCS-4 из вереницы UTF-9 (версия 
  собрания PDP-10)
  ; Принимает: п1/9-битовый указатель байта на вереницу 
  UTF-9
  ; Возвращения +1: Всегда, т1/UCS-4 ценность, 
  п1/обновленный указатель байта
  ; Ударяет T2
  UT92U4: ТДЗА T1, T1; начало с нолем U92U41
  : КСОР T1, T2; октет вставки в UCS-4 оценивает ЛШ T1, 
  ^D8; переместите ценность UCS-4 ИЛДБ T2, P1; получите 
  следующий нонет ТРЗ T2,400; октет извлечения, какое-нибудь 
  продолжение? 
  ДЖРСТ U92U41; да, продолжите 
  КСОР T1, T2; вставьте заключительный октет 
  ПОПДЖ P,
  /* Возвратить ценность UCS-4 из вереницы UTF-9 (C, версия) 
  * Принимает: указатель на указатель на UTF-9 натягивает 
  * Возвращения: характер UCS-4, нонет указатель обновил 
  */
  UINT31 UTF9_to_UCS4 (UINT9 ** utf9PP) 
  {
    UINT9 нонет; 
    UINT31 ucs4; 
    для (ucs4 = (нонет = * (*utf9PP) ++) и 0xff; 
    нонет и 0x100; 
    ucs4 | = (нонет = * (*utf9PP) ++) и 0xff) 
    ucs4
     <<= 8;
     return ucs4;
  }

5.2.  UTF-9 to UCS-4 Conversion

   The following routines demonstrate conversion from 
   UTF-9 to UCS-4. For simplicity, these routines do not 
   do any validity checking. Routines used in applications 
   SHOULD reject invalid UCS-4 codepoints; that is, 
   codepoints used for UTF-16 surrogates or codepoints 
   with values exceeding 0x10ffff for [UNICODE].



Crispin         Informational                      [Page 5]

RFC 4042        UTF-9 and UTF-18                1 April 2005


   ; Write UCS-4 character to UTF-9 string (PDP-10 assembly version)
   ; Accepts: P1/ 9-bit byte pointer to UTF-9 string
   ;          T1/ UCS-4 character to write
   ; Returns +1: Always, P1/ updated byte pointer
   ; Clobbers T1, T2; (T1, T2) must be an accumulator pair

   U42UT9: SETO T2,            ; we'll need some of these 1-bits later
           ASHC T1,-^D8        ; low octet becomes nonet with high 0-bit
   U32U91: JUMPE T1,U42U9X     ; done if no more octets
           LSHC T1,-^D8        ; shift next octet into T2
           ROT T2,-1           ; turn it into nonet with high 1 bit
           PUSHJ P,U42U91      ; recurse for remainder
   U42U9X: LSHC T1,^D9         ; get next nonet back from T2
           IDPB T1,P1          ; write nonet
           POPJ P,

   /* Write UCS-4 character to UTF-9 string (C version)
    * Accepts: pointer to nonet string
    *          UCS-4 character to write
    * Returns: updated pointer
    */

   UINT9 *UCS4_to_UTF9 (UINT9 *utf9P,UINT31 ucs4)
   {
     if (ucs4 > 0x100) {
если (ucs4> 0x10000) {
если (ucs4> 0x1000000) 
*utf9P ++ = 0x100 | ((ucs4>> 24) и 0xff); 
*utf9P ++ = 0x100 | ((ucs4>> 16) и 0xff);
} 
*utf9P ++ = 0x100 | ((ucs4>> 8) и 0xff);
} 
*utf9P ++ = ucs4 и 0xff; 
возвратите utf9P;
}

6. Опыт Выполнения
  Поскольку типовые рутины демонстрируют, весьма просто 
  осуществить UTF-9 и UTF-18 на нонет-базирующейся 
  архитектуре. Более сложные рутины могут быть найдены в 
  ftp: // panda.com/tops-20/utools.mac.txt или от 
  линглинг.панда.ком через файл
  УТУЛС.МАК через АНОНИМНЫЙ [ПРОГРАММА ПЕРЕДАЧИ ФАЙЛОВ].




Крайспин Информэйшнал [Страница 6]
РФК 4042 UTF-9 и UTF-18 1 апреля 2005
   
Мы находимся теперь в процессе осуществления поддержки 
нонет-базирующимся файлам текста и автоматизированному 
преобразованию между семиразрядным байтом, октетом, и 
нонет текстовыми данными.

7. Ссылки

7.1. Нормативные Ссылки
  Постэль [ПРОГРАММА ПЕРЕДАЧИ ФАЙЛОВ], J. и J. Реинолдс, 
  "Протокол Передачи Файла", СТАНД. 9, РФК 959, октябрь 1985.
  [ИАБ-СИМВОЛЬНЫЙ] Веидер, C., Престон, C., Симонсен, K., 
  Алвестранд, H., Аткайнсон, R., Крайспин, M., и 
  P. Сванберг, "Сообщение Симпозиума Набора символов ИАБ, 
  проведенного 29 февраля - 1 марта 1996", РФК 2130, 
  апрель 1997.
  [Международная Организация по Стандартизации 10646] 
  Международная Организация для Стандартизации, 
  "Информационная Технология - Универсальный Многократный 
  октет закодировала Набор символов (УКС)", Стандарт 
  Международной Организации по Стандартизации/МЕЖДУНАРОДНОЙ 
  ЭЛЕКТРОТЕХНИЧЕСКОЙ КОМИССИИ 10646, состоявший из 10646-1:2000 
  Международной Организации по Стандартизации/МЕЖДУНАРОДНОЙ 
  ЭЛЕКТРОТЕХНИЧЕСКОЙ КОМИССИИ, "Информационная технология - 
  Универсальный Многократный октет Закодированный Набор 
  символов (УКС) - Часть 1: Архитектура и Основной Многоязычный 
  Самолет", 10646-2:2001 Международная Организация по 
  Стандартизации/МЕЖДУНАРОДНАЯ ЭЛЕКТРОТЕХНИЧЕСКАЯ КОМИССИЯ, 
  "Информационная технология - Универсальный Многократный 
  октет Закодированный Набор символов (УКС) - Часть 2: 
  Дополнительные Самолеты" и Международная Организация по 
  Стандартизации/МЕЖДУНАРОДНАЯ ЭЛЕКТРОТЕХНИЧЕСКАЯ КОМИССИЯ 10646-1:2000
  /Amd 1:2002, "Математические символы и другие характеры".
  [КЛЮЧЕВЫЕ СЛОВА] Браднер, S., "Ключевые слова для 
  использования в РФКС, чтобы Указать Уровни Требования", 
  КОММУНИСТИЧЕСКАЯ ПАРТИЯ ВЕЛИКОБРИТАНИИ 14, РФК 2119, 
  март 1997.
  [УНИКОУД] Консорциум Уникоуд, "Стандарт Уникоуд - 
  Версия 3.2", определенная по Стандарту Уникоуд, 
  Версия 3.0 (Чтение, MA, Addison-Уэсли, 2000. ISBN 
  0-201-61633-5), как исправлено Стандартным Приложением 
  *27 Уникоуд: Уникоуд 3.1 и Стандартным Приложением *28 
  Уникоуд: Уникоуд 3.2, март 2002.

7.2. Информативные Ссылки
  [Американский ASCII] американский Национальный Институт 
  Стандартов, "Закодированный Набор символов - 7-битовый 
  американский Стандартный Кодекс для Информационного Обмена", 
  АНСИ X3.4, 1986.
  [UTF-16] Хоффман, P. и F. Йерджео, "UTF-16, зашифровывание 
  Международной Организации по Стандартизации 10646", 
  РФК 2781, февраль 2000.


Крайспин Информэйшнал [Страница 7]
РФК 4042 UTF-9 и UTF-18 1 апреля 2005
   
  [UTF-7] Ювелир, D. и М. Дэвис, "UTF-7 Безопасный почтой 
  Формат Преобразования Уникоуд", РФК 2152, май 1997.
  [UTF-8] Соллинс, K., "Архитектурные Принципы Однородного 
  Решения Названия Ресурса", РФК 2276, январь 1998.

8. Рассмотрения Безопасности
  Как с UTF-8, UTF-9 может представить кодепоинтс, которые 
  не находятся в [УНИКОУД]. Заявления должны утвердить 
  вереницы UTF-9, чтобы гарантировать, что все кодепоинтс 
  не превышают максимум [УНИКОУД] U+10FFFF.
  Типовые рутины в этом документе - например цели, и не 
  делают никакой попытки утвердить их аргументы, например, 
  тест на выходят за пределы ([УНИКОУД] ценности, большие 
  чем 0x10ffff) или кодепоинтс, используемый для заместителей. 
  Помимо того, чтобы приводить к недействительным данным, 
  это может также создать тайные каналы.

9. Рассмотрения IANA
  IANA должно зарезервировать названия чарсет "UTF-9" и 
  "UTF-18" для будущего назначения.

Адрес Автора
  Марк Р. 
  Крайспин Панда, Программирующий 
  6158 Петель Аркана НЕОНА 
  Остров Бэйнбриддж, ВА 98110-2098
  Телефон: (206) 842-2385 
  ЭЛЕКТРОННЫХ ПОЧТ: UTF9@Lingling. Панда. КОМ









Крайспин Информэйшнал [Страница 8]
РФК 4042 UTF-9 и UTF-18 1 апреля 2005
[an error occurred while processing this directive] Последние изменения внесены 1.04.2002 [an error occurred while processing this directive]