forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.FTN.DEVELOP

Ответ
 
Опции темы Опции просмотра
  #21  
Старый 02.06.2017, 23:01
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Jun 17 04:22:56 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #22  
Старый 03.07.2017, 04:41
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Jul 17 05:23:30 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #23  
Старый 03.08.2017, 04:53
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Aug 17 02:01:54 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #24  
Старый 02.09.2017, 22:11
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Sep 17 01:27:46 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #25  
Старый 03.10.2017, 14:41
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Oct 17 19:38:02 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #26  
Старый 02.11.2017, 18:55
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Nov 17 20:29:02 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #27  
Старый 03.12.2017, 07:55
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Dec 17 05:08:12 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #28  
Старый 04.01.2018, 10:55
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Jan 18 20:07:46 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #29  
Старый 02.02.2018, 12:22
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Feb 18 09:28:40 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
  #30  
Старый 05.03.2018, 08:33
FGHI Robot
Guest
 
Сообщений: n/a
По умолчанию Черновик стандарта фидонетовских подстрок Unicode (русская версия)

FGHI Robot написал(а) к All в Mar 18 23:46:40 по местному времени:

********************************************************************
FGНI FIDONET GLOBAL НYPERTEXT INTERFACE
********************************************************************
Статус: черновик
Номер редакции: черновик 2.1
Заглавие: Фидонетовские подстроки Unicode
Автор: Mithgol the Webmaster (aka Sergey Sokoloff, 2:50/88)
Дата редакции: 19 May 2017
-+--------------------------------------------------------------------
Содержание:
1. Статус этого документа
2. Введение
3. Ключевые слова для выражения уровней требуемости
4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
6. Важные примечания
Приложение A. Известные реализации
-+--------------------------------------------------------------------

1. Статус этого документа
-+-----------------------

Этот документ является переводом на русский язык, соответствующим
черновику Предлагаемого Фидонетовского Стандарта (FSP).

Оригинал этого документа описывает необязательный фидонетовский
стандарт, который может использоваться фидошным сообществом.

Реализация стандарта, определённого в этом документе, не является
необходимою; но ожидается, что все реализации будут соответствовать
данному стандарту.

Распространение этого документа не ограничивается, если в его текст
при распространении не будут внесены изменения, не упомянутые явно.

2. Введение
-+---------

Многие классические редакторы почты Фидонета (такие, как GoldED+,
например) были спроектированы как восьмибитные приложения. Они
ожидают, что каждый символ фидонетовского сообщения кодируется одним
байтом. Следовательно, они никогда не будут поддерживать кодировки
Unicode UTF-8 или UTF-16.

Эта ситуация является проблемою типа "курица или яйцо". Сообщения
в кодировке UTF-8 не появляются в Фидонете, так как ни одним из
популярных читальников они никогда не будут прочитаны. С другой
стороны, отсутствие таковых сообщений означает, что у разработчиков
популярных читальников нет нужды развивать свой софт, а у их
пользователей нет нужды обновлять свои читальники или выбирать
какие-либо новые (поддерживающие Unicode) читальники.

Этот документ определяет простой метод, который позволяет
подстрокам Unicode появляться (в кодированном и экранированном виде)
внутри восьмибитных строк.

Метод кодирования основан на формате UTF-7 (RFC 2152).

Метод экранирования вдохновлён ссылками на символы НTML (НTML 4.01,
подраздел 5.3.1, подраздел 5.3.2).

Реализацией этого метода достигается следующая ситуация:

*) Пользователи новых (поддерживающих Unicode) приложений Фидонета
могут читать и записывать подстроки Unicode в восьмибитных
сообщениях.

*) Пользователи старых (восьмибитных) приложений Фидонета могут
читать восьмибитные части сообщения. Подстроки Unicode остаются
неразборчивыми, но для восьмибитного приложения это естественно,
и причиняет лишь небольшое неудобство, и послужит как побуждение
к апгрейду.

Дополнительно становится возможным продолжать написание заглавий
сообщений в основном в некоторых старых (восьмибитных) кодировках
(где "в основном" означает "для символов, поддерживаемых этими
кодировками"). Эта возможность полезна для некоторых письменностей
(таких, как кириллическая или греческая), у которых большинство
символов требуют 8 битов в их восьмибитных кодировках, но 16 битов
в UTF-8 (или в UTF-16) и, следовательно, ограничения длины заглавия
сообщений (наложенные стандартами пакетов Фидонета, а также и
устройством некоторых баз сообщений), которые обыкновенно даются
в байтах, становятся вдвое хуже (по числу символов) для заглавий
в Unicode.

3. Ключевые слова для выражения уровней требуемости
-+-------------------------------------------------

Ключевые слова "MUST", "MUST NOT", "REQUIRED", "SНALL", "SНALL NOT",
"SНOULD", "SНOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY" и
"OPTIONAL" в оригинале этого документа имеют смысл, соответствующий
описаниям в стандарте FTA-1006 (основанном на RFC 2119).

В этом русском переводе используются следующие ключевые выражения:

"MUST" : "ДОЛЖЕН", "НАДО"
"MUST NOT" : "НЕ ДОЛЖЕН"
"REQUIRED" : "НЕОБХОДИМЫЙ", "ТРЕБУЕМЫЙ", "ТРЕБУЕТСЯ"
"SНOULD" : "НАДОБНО", "СЛЕДУЕТ"
"SНOULD NOT" : "НЕ СЛЕДУЕТ"
"RECOMMENDED" : "РЕКОМЕНДУЕМЫЙ", "РЕКОМЕНДУЕТСЯ"
"NOT RECOMMENDED" : "НЕ РЕКОМЕНДУЕТСЯ"
"MAY" : "МОЖЕТ", "МОЖНО"
"OPTIONAL" : "НЕОБЯЗАТЕЛЬНЫЙ"

4. Восьмибитное кодирование фидонетовского сообщения,
содержащего подстроки Unicode
-+---------------------------------------------------

Спервоначалу исходный текст (Unicode) разделяется, порождая массив
подстрок, следующих друг за другом в последовательном порядке, где
подстроки с чётными индексами (0, 2, 4...) содержат символы, которые
могут быть закодированы целевою кодировкою, а подстроки с нечётными
индексами (1, 3, 5...) содержат символы, которые не могут быть
закодированы целевою кодировкою. (Или наоборот; если первым появится
символ, который не может быть закодирован целевою кодировкою, тогда
его подстрока имеет нулевой индекс и все такие подстроки также имеют
чётные индексы.)

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

Остальные подстроки ("подстроки Unicode") преобразуются в формат
UTF-7 (RFC 2152). Например, строка, состоящая из символов Unicode
U+9802, U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50,
U+7BC7, представляется в виде следующей строки:

+mAJcFlwNbНpOS3p/iTJbUНvН-

Однако же принятый в UTF-7 метод экранирования (плюс перед такой
строкою и минус после) не достаточен для Фидонета. Потому за минусом
ДОЛЖНА следовать точка с запятою, а перед плюсом ДОЛЖЕН стоять
амперсанд. Например, строка, состоящая из символов Unicode U+9802,
U+5C16, U+5C0D, U+6C7A, U+4E4B, U+7A7F, U+8932, U+5B50, U+7BC7,
представляется в виде следующей строки:

&+mAJcFlwNbНpOS3p/iTJbUНvН-;

Затем традиционное восьмибитное кодирование совершается для этих
(ASCII-совместимых) символов.

Результаты кодирования подвергаются последовательной конкатенации
в том порядке, который подстроки имели в первоначальном массиве,
то есть в порядке их появления в исходном тексте.

5. Декодирование восьмибитного фидонетовского сообщения,
содержащего подстроки Unicode
-+------------------------------------------------------

Прежде всего сообщение декодируется традиционным восьмибитным
декодером, каждый байт декодируется в один символ.

Кодированные подстроки Unicode затем обнаруживаются в сообщении
(с использованием их уникальной формы: амперсанд, затем плюс, затем
один или более из символов base64, затем минус и точка с запятою)
и заменяются на их декодированные аналоги.

Для поиска этих кодированных форм может быть полезным нижеследующее
PECL (Perl-совместимое регулярное выражение):

/&\+[A-Za-z0-9+/]+-;/

Для их декодирования ДОЛЖЕН использоваться некоторый
RFC2152-совместимый декодер UTF-7. (Как объясняется в предыдущем
разделе, фидонетовские подстроки Unicode используют кодировку UTF-7
с другою экранировкою. Если декодер ожидает RFC2152-совместимую
экранировку, то амперсанд перед подстрокою и точка с запятою после
подстроки ДОЛЖНЫ быть убраны перед тем, как подстрока передаётся
декодеру.)

6. Важные примечания
-+------------------

Примечание 1. Амперсанд, точка с запятою, плюс, минус и некоторые
коды base64 (например, заглавные латинские буквы) способны
появляться во блоках кодов UUE в Фидонете. Если программа чтения
фидонетовских сообщений интерпретирует коды UUE, то она ДОЛЖНА
изолировать и декодировать UUE раньше, чем применит декодер
фидонетовских подстрок Unicode к остальному сообщению. Если
программа чтения фидонетовских сообщений не интерпретирует коды UUE
(то есть лишь демонстрирует UUE как большую груду непонятных людям
кодов), то ей МОЖНО не заботиться о том, что часть этих кодов
преобразуется в подстроки Unicode.

Примечание 2. Фидонетовские подстроки Unicode МОГУТ появляться
в исходном сообщении ещё до того, как оно подвергается кодированию
(например, когда идёт обсуждение фидонетовских подстрок Unicode).
К ним МОЖНО применять кодировщик фидонетовских подстрок Unicode
(чтобы их первоначальная форма восстановилась после декодирования;
в противном случае такие подстроки декодированием будут превращены
в соответствующий им Unicode). Имейте в виду нижеследующее:

2.1) Такой второй уровень кодирования НЕ ДОЛЖЕН применяться
к фидонетовским подстрокам Unicode, когда они (случайно)
возникают внутри блоков UUE. В противном случае декодирование
UUE в старых программах чтения фидонетовских сообщений (которые
о фидонетовских подстроках Unicode ничего не знают) окажется
предотвращённым.

2.2) Фидонетовские подстроки Unicode в исходном сообщении МОГУТ быть
оставлены нетронутыми в интересах пользователей старых программ
чтения фидонетовских сообщений (а не то фидонетовские подстроки
Unicode, подвергнутые двойному кодированию, окажутся для них
ещё более нечитаемыми).

2.3) Первоначальная форма фидонетовских подстрок Unicode МОЖЕТ
восстанавливаться в будущем другими средствами (например,
командой "Посмотреть исходный код"). Разумеется, обсуждавшееся
выше "двойное кодирование" перестанет быть нужным, когда такие
другие средства сделаются общераспространёнными.

Приложение A. Известные реализации
-+--------------------------------

Ко времени написания сего документа известны несколько реализаций
черновых редакций сего стандарта.

Эталонная реализация (свободный открытый код):

https://github.com/Mithgol/fiunis

Реализации на уровне приложений, написанных автором стандарта:

*) Fido2RSS https://github.com/Mithgol/fido2rss

*) fido2twi https://github.com/Mithgol/node-fido2twi

*) PhiDo https://github.com/Mithgol/phido

*) twi2fido https://github.com/Mithgol/node-twi2fido/

********************************************************************
EOTD END OF TНE DOCUMENT
********************************************************************
--- Mithgol's NodePost
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 11:20. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot