Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции GANJANET.LOCAL
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции GANJANET.LOCAL с датами от 13 Oct 05 22:03:42 до 05 Aug 17 10:35:42, всего сообщений: 3030
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 2509 из 3030 =================================== GANJANET.LOCAL =
От   : Mithgol the Webmaster            2:5063/88          08 Nov 07 22:44:12
Кому : Alexey Vissarionov                                  08 Nov 07 22:44:12
Тема : Кодирование из CP866 в Unicode при RSS-трансляциях из Фидонета
FGHI : area://GANJANET.LOCAL?msgid=2:5063/88+47336835
На   : area://GANJANET.LOCAL?msgid=2:5020/545+4731ee57
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================
* изначально написано в эхоконференцию R50.Bone
* также было отослано в эхоконференцию Ru.FTN.Develop
* также было отослано в эхоконференцию GanjaNet.Local
* также было отослано в эхоконференцию Ru.Semiotics

Так было 19:20 07 Nov 07 написано от Alexey Vissarionov к Sergey ``Mithgol'' Sokoloff:

SS>> А то беседа началась с того, что ты собирался что-то прояснить
SS>> прежде, нежели 'принимать заявки на потоки'. Может быть, ты даже
SS>> собирался из Фидонета в RSS транслировать, а не из RSS в Фидонет --

AV> Хм... А что, надо? Работы - на два свободных вечера :-)

Тонкий вопрос. Я помню, как в Ru.FTN.Develop (или в некоей соседствующей эхе)
ты критиковал смоленский FGHI-совместимый гейт за отсутствие открытости кода.
Разумеется, было бы интересно посмотреть, как тебе самому удастся реализовать
одну из функций этого гейта (а именно, RSS-трансляцию), не теряя совместимости
адресации с FGHI (иными словами, itemовским URLом или хотя бы его завершением
должен быть area://-адрес, соответствующий черновику стандарта FGHI URL),
и одновременно придав своему коду ценимое тобою достоинство ── открытость
(свободность) исходников.

Как одну из составных частей такой задачи я прозреваю, например, составление
таблицы отображения из фидонетовской кодировки русского языка (то есть CP 866)
на тот Unicode, который станет использоваться в XML-коде RSS-трансляции.
Полагаю, тебе известно, что многие фидошники ── во всяком случае, не один
и не два фидошника ── используют управляющие символы с кодами менее 0x20
не в их буквальном качестве управляющих символов (чему соответствовали бы
юникоды менее 0x20), и даже не для обозначения управляющих символов в тексте
(чему соответствовали бы юникоды от 0x2400 до 0x241F), но как набор графических
символов:

0x01 ── белая рожица с чёрными глазами, ртом и контуром лица
        (здесь и далее предполагаю, что символ выводится чёрным по белому);
0x02 ── чёрная рожица с белыми глазами, ртом и контуром лица;
0x03 ── карточная масть червей;
0x04 ── карточная масть бубен;
0x05 ── карточная масть треф;
0x06 ── карточная масть пик;
0x07 ── чёрный буллит на белом фоне;
0x08 ── белый буллит на чёрном фоне;
0x09 ── чёрный кружок (окружность);
0x0A ── белая окружность на фоне чёрного знакоместа;
0x0B ── символ мужского пола (или планеты Марса);
0x0C ── символ женского пола (или планеты Венеры);
0x0D ── одиночный символ ноты;
0x0E ── двойной символ ноты;
0x0F ── шесть лучей, исходящих от небольшого кружка;
0x10 ── треугольник с вершиною, ориентированной направо;
0x11 ── треугольник с вершиною, ориентированной налево;
0x12 ── стрелка с двумя остриями, указывающими вверх и вниз;
0x13 ── двойной воклицательный знак;
0x14 ── символ конца абзаца;
0x15 ── символ параграфа;
0x16 ── символ хрен знает чего, смахивает на жирное высокое подчёркивание;
0x17 ── подчёркнутая стрелка с двумя остриями, указывающими вверх и вниз;
0x18 ── стрелка, указывающая вверх;
0x19 ── стрелка, указывающая вниз;
0x1A ── стрелка, указывающая вправо;
0x1B ── стрелка, указывающая влево;
0x1C ── что-то вроде строчной 'г', повёрнутой на 90° влево (логическое HЕ?);
0x1D ── стрелка с двумя остриями, указывающими влево и вправо;
0x1E ── треугольник, указывающий наверх;
0x1F ── треугольник, указывающий вниз.

В этой связи предлагаю следующее преобразование из CP866 в Unicode:

0x01 ──> 0x263A ── белая улыбающаяся рожица (здесь и далее названия символов
                   Unicode предполагают, что символ выводится чёрным по белому)
0x02 ──> 0x263B ── чёрная улыбающаяся рожица;
0x03 ──> 0x2665 ── чёрная карточная масть червей;
0x04 ──> 0x2666 ── чёрная карточная масть бубен;
0x05 ──> 0x2663 ── чёрная карточная масть треф;
0x06 ──> 0x2660 ── чёрная карточная масть пик;
0x07 ──> 0x2022 ── буллит;
0x08 ──> 0x25D8 ── инверсный буллит;
0x09 ──> воспринимается буквально: контрольный символ табуляции;
0x0A ──> воспринимается буквально: контрольный символ перевода строки (LF);
0x0B ──> 0x2642 ── символ мужского пола;
0x0C ──> 0x2640 ── символ женского пола;
0x0D ── воспринимается буквально: контрольный символ возврата каретки (CR);
0x0E ──> 0x266B ── соединённые восьмые доли ноты;
0x0F ──> 0x2732 ── астериск с открытым центром;
0x10 ──> 0x25B6 ── чёрный треугольник, указывающий направо;
0x11 ──> 0x25C0 ── чёрный треугольник, указывающий налево;
0x12 ──> 0x2195 ── стрелка вверх-вниз;
0x13 ──> 0x203C ── двойной воклицательный знак;
0x14 ──> 0xB6 ── PILCROW SIGN (символ абзаца);
0x15 ──> 0xA7 ── SECTION SIGN (символ параграфа);
0x16 ──> 0x2582 ── нижний блок на четверть;
0x17 ──> 0x21A8 ── стрелка вверх-вниз с основанием;
0x18 ──> 0x2191 ── стрелка наверх;
0x19 ──> 0x2193 ── стрелка вниз;
0x1A ──> 0x2192 ── стрелка вправо;
0x1B ──> 0x2190 ── стрелка влево;
0x1C ──> 0x2310 ── обратный символ HЕ (с точностью до вертикального отражения
                   соответствует символу 0x1C из CP866);
0x1D ──> 0x2194 ── стрелка влево-вправо;
0x1E ──> 0x25B2 ── чёрный треугольник, указывающий наверх;
0x1F ──> 0x25BC ── чёрный треугольник, указывающий вниз.

Полагаю, одним этим предложением я экономлю как минимум час работы сообществу
фидонетовских разработчиков, поскольку сам я затратил на его подготовку сегодня
два часа, включая время на проглядывание Unicode charts в PDF; я полагаю, что
вдвое проще окажется проверка предложения, нежели была бы задача подготовить
такое решение с нуля при программировании трансляции из Фидонета в RSS.

Сам я из всего этого списка считаю сомнительными только три позиции:

0x0F ──> 0x2732 ── астериск с открытым центром;
0x16 ──> 0x2582 ── нижний блок на четверть;
0x1C ──> 0x2310 ── обратный символ HЕ.

Может быть, кто-нибудь подберёт позиции в Unicode, более соответствующие
(логически или семантически) исходным ASCII-символам.

А теперь доперебираем остальные коды CP866.

0x20..0x7E ──> 0x20..0x7E ── сохраняют свой код и в Unicode.

0x7F ──> 0x25B3 ── белый треугольник, указывающий наверх (в оригинале символ
белого прямоугольника, достроенного до пятиугольника указывающим наверх
остриём). Спорный символ. Может быть, кто-нибудь подберёт позицию в Unicode,
более соответствующую (логически или семантически) исходному ASCII-символу.

0x80..0x9F ──> 0x410..0x42F ── заглавные русские буквы А..Я.

0xA0..0xAF ──> 0x430..0x43F ── строчные русские буквы а..п.

0xB0..0xB2 ──> 0x2591..0x2593 ── символы затенения (25%, 50%, 75%).

Символы псевдографики по http://en.wikipedia.org/wiki/CP866 соответствуют:

0xB3 ──> 0x2502
0xB4 ──> 0x2524
0xB5 ──> 0x2561
0xB6 ──> 0x2562
0xB7 ──> 0x2556
0xB8 ──> 0x2555
0xB9 ──> 0x2563
0xBA ──> 0x2551
0xBB ──> 0x2557
0xBC ──> 0x255D
0xBD ──> 0x255C
0xBE ──> 0x255B
0xBF ──> 0x2510

0xC0 ──> 0x2514
0xC1 ──> 0x2534
0xC2 ──> 0x252C
0xC3 ──> 0x251C
0xC4 ──> 0x2500
0xC5 ──> 0x253C
0xC6 ──> 0x255E
0xC7 ──> 0x255F
0xC8 ──> 0x255A
0xC9 ──> 0x2554
0xCA ──> 0x2569
0xCB ──> 0x2566
0xCC ──> 0x2560
0xCD ──> 0x2550
0xCE ──> 0x256C
0xCF ──> 0x2567

0xD0 ──> 0x2568
0xD1 ──> 0x2564
0xD2 ──> 0x2565
0xD3 ──> 0x2559
0xD4 ──> 0x2558
0xD5 ──> 0x2552
0xD6 ──> 0x2553
0xD7 ──> 0x256B
0xD8 ──> 0x256A
0xD9 ──> 0x2518
0xDA ──> 0x250C

Далее следуют символы блокостроения:

0xDB ──> 0x2588 (полный блок)
0xDC ──> 0x2584 (верхний полублок)
0xDD ──> 0x258C (левый полублок)
0xDE ──> 0x2590 (правый полублок)
0xDF ──> 0x2580 (верхний полублок)

Далее следуют буквы:

0xE0..0xEF ──> 0x440..0x44F ── русские буквы р..я.

0xF0 ──> 0x401 (заглавная Ё)
0xF1 ──> 0x451 (строчная ё)

0xF2 ──> 0x404 (заглавная Є)
0xF3 ──> 0x454 (строчная є)

0xF4 ──> 0x407 (заглавная Ї)
0xF5 ──> 0x457 (строчная ї)

0xF6 ──> 0x40E (заглавная Ў)
0xF7 ──> 0x45E (строчная ў)

Далее снова следуют символы:

0xF8 ──> 0xB0 (символ градуса, °)

0xF9 ──> 0x2219 (буллит-оператор) или 0x2022 (буллит);

0xFA ──> 0xB7 (средняя точка)

0xFB ──> 0x221A (квадратный корень) или 0x2713 (пометка-галочка)

0xFC ──> 0x2116 (символ номера)

0xFD ──> 0xA4 (знак валюты)

0xFE ──> 0x25A0 (чёрный квадрат) или (лучше?) 0x25AA (небольшой чёрный квадрат)

0xFF ──> 0xA0 (неразрывный пробел)

Hу вот. В общей сложности на составление этой таблицы я убил три часа.
Теперь есть повод разфорвардить её по разным эхам и послушать комментарии.


... вот и указываю на своё модераторство в бонной эхоконференции Ru.Fidonet.Yo
--- Знаешь ли ты, Alexey, что "надёрнутый" пишется через "ё"?
* Origin: Болея душой за Россию свою, за Путина голос я не подаю! (2:5063/88)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.027375 секунды