#11
|
|||
|
|||
Re: RU.ANECDOT: Добавить постинг анекдотов с юникодом
Oleg Melnikov написал(а) к Denis Chernyaev в Jan 18 23:30:54 по местному времени:
Здpавствуй, Denis! VF>>>> Если ещё сможешь предусмотреть автозамену кавычек-ёлочек, тире, VF>>>> троеточий и тому подобных знаков на имеющиеся в CP866, то цены VF>>>> такому RSS-роботу не будет. DC>>> Эх... Тут в залежах обнаружил ВМку с доработанным скриптом, в DC>>> котором я сам подменял все левые символы... VF>> Все не надо, достаточно будет десятка наиболее часто VF>> встречающихся. Даже если удастся заменить только кавычки и тире, VF>> то ужЕ количество вопросительных знаков в гейтуемых сообщениях VF>> уменьшится в разы. DC> Я про все левые. Те, что не нравились мне в сообщениях. Там было-то DC> штук 6 условий... Вместо подобных костылей давно бы уже перешли на юникод. С уважением - 0men --- /Make Fidonet Darknet Again/ |
#12
|
|||
|
|||
Выход за*пределы CP866
Mithgol the Webmaster написал(а) к Dmitry Bakhrov в Jan 18 07:56:44 по местному времени:
Так было 18:36 05 Jan 18 написано от Dmitry Bakhrov к Vladimir Fyodorov: VF>> Если ещё сможешь предусмотреть автозамену кавычек-ёлочек, тире, VF>> троеточий и тому подобных знаков на имеющиеся в CP866, то цены такому VF>> RSS-роботу не будет. DB> Увы, в cp-866 есть далеко не все знаки, которые используются при DB> постинге статей в интернете. В случае с кавычками, многоточиями всё DB> легко, а вот на что заменять разные ёлочки, верхние нижние индексы, DB> четверти и прочее... По адресу https://github.com/Mithgol/fiunis/bl...fiunis.rus.txt я*предложил способ кодирования символов, выходящих за*пределы однобайтовой кодировки (такой, как*CP866). Эта*гиперссылка публикуется в*Ru.Fidonet.Today ежемесячно. Предлагаю использовать этот*способ. Для*удобства*ознакомления прилагаю изложение*способа вот*прям*тут: ******************************************************************** 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 ******************************************************************** Фидонет будет великим и гипертекстовым! [Ru.Mozilla] http://Mithgol.Ru/ Mithgol the Webmaster. [Братство Нод] [Team А я меняю subj] ... Ничего, пережили блокаду. Бог даст ── переживём и изобилие! (из анекдота) --- Последний pаз пpинимал лекаpства от головной боли: 4 января 2018 года. |