Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     28 Nov 2002  20:40:56
 To : Victor Wagner
 Subject : Re: KOI2utf8
 -------------------------------------------------------------------------------- 
 
 Victor Wagner wrote:
 
 > AS> Victor Wagner wrote:
 >>>И что, преобразование 
 >>>
 >>>"\x2020Сегодня\xA0\x2014 Geschlo\xDFen" -> 
 >>>"†Сегодня — Geschlossen" сделает?
 >>>
 >>>Очень бы хотел посмотреть решение на 5.8 перле, которое при
 >>>преобразовании в 8-битный чарсет позволяет вызывать свою функцию
 >>>преобразования на все символы, отсутствующие в выходной перекодировке.
 >>>
 >>>В экран уместишь?'
 >>
 > 
 > AS> Эээ... давай разберемся по-порядку. Во-первых, что это за строка No.1?
 > AS> Она изначально в какой кодировке - в utf8? И как трактуются \xNNNN ?
 > AS> Как chr(NN) . 'NN'? Ибо в perl уникодные символы в строке записываются
 > 
 > Hу извини. Я слишком неопытен в работе с юникодом в перле, поэтому
 > не написал там фигурных скобок. Я имел в виду:
 > 
 > "\x{2020}Сегодня\x{A0}\x{2014} Geschlo\x{DF}en"
 > 
 > Результат может быть в любой восьмибитной кодировке, в которой нет
 > символов EM-DASH, BULLET и западно-европейских акцентированных букв.
 > Hапример, в кои-8. С неразрывным пробелом там призовая игра, ибо он в
 > кодировки есть.
 > 
 > AS> как \x{NNNN}. И в какой кодировке Вы хотите результат? Ибо то, что
 > AS> я вижу вообще не есть перекодировка чарсетов.
 > 
 > Согласен. Это гораздо более практически полезная задача ПРЕДСТАВЛЕHИЯ
 > строки, которая легко и естественно представляется в юникоде, средствами
 > 8-битной кодировки + HTML. Буде будет такое решение, я, естественно,
 > попробую адаптировать его к другим языкам, которые позволяют средставми 
 > 8-битной кодировки выразить более другие символы - TeX, Perl, Tcl.
 > Если сложность адаптации будет соответствовать прямизне представления
 > этих символов в более другом языке, сделаю вывод, что в 5.8 перле 
 > работа с кодировками сделана УДОБHО.
 
 ======================== example ==========================
 #!/usr/bin/perl -w
 use strict;
 
 BEGIN {
      use utf8;
      package Encode::myhtml;
      use base qw(Encode::Encoding);
 
      __PACKAGE__->Define('myhtml');
 
      my %subst = (
   '&' => '&', '<' => '<', '>' => '>', '"' => '"',
   "\x{00a0}" => ' ', "\x{2014}" => '—', "\x{00df}" => 'ss'
      );
 
      sub encode ($$;$) {
   (my $str = $_[1]) =~ s/([&<">\x{0080}-\x{ffff}])/$subst{$1} || $1/ge;
   $_[1] = '' if $_[2];
   Encode::encode('koi8-r', $str, Encode::FB_HTMLCREF);
      }
 };
 
 use utf8;
 use encoding 'utf8', STDOUT => 'myhtml';
 
 print "\x{2020}пєп№пЁпОп¶пЧяЮ\x{A0}\x{2014} Geschlo\x{DF}en";
 ======================== eof ==========================
 
 Вот, пожалуйста. Можно было описать свой UCM файл с кодировкой,
 но поскольку это по большей части повторение уже имеющейся koi8-r
 я решил (ценой некоторого падения скорости) класс с кодировкой
 написать на perl, а не в виде XS. Hадеюсь, что в твой экран
 оно влезет. Разумеется все, что обернуто в BEGIN впоследствии
 надо вынести в отдельный Encode/myhtml.pm который сам вызовется
 при необходимости. То, что стоит в print - это и есть твоя строка.
 К сожалению, гейт fido7 не разрешает (насколько я помню) слать
 письма в utf-8, посему я пишу в koi-8 и вставляю код AS IS.
 Если что-то поломается - открой скрипт любым редактором
 поддерживающим utf-8 и поправь строчку :)
 
 Андрей
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 KOI2utf8   Timur Vafin   27 Nov 2002 23:17:13 
 Re: KOI2utf8   Victor Wagner   28 Nov 2002 01:26:13 
 KOI2utf8   Ruslan Bondarev   28 Nov 2002 10:01:49 
 Re: KOI2utf8   Victor Wagner   28 Nov 2002 11:43:55 
 Re: KOI2utf8   Andrey Sapozhnikov   28 Nov 2002 17:56:09 
 Re: KOI2utf8   Victor Wagner   28 Nov 2002 18:04:24 
 Re: KOI2utf8   Andrey Sapozhnikov   28 Nov 2002 18:45:24 
 Re: KOI2utf8   Victor Wagner   28 Nov 2002 19:58:32 
 Re: KOI2utf8   Andrey Sapozhnikov   28 Nov 2002 20:40:56 
 Re: KOI2utf8   Victor Wagner   28 Nov 2002 21:57:03 
 Re: KOI2utf8   Andrey Sapozhnikov   29 Nov 2002 18:37:18 
 Re: KOI2utf8   Victor Wagner   29 Nov 2002 18:58:53 
 Re: KOI2utf8   Andrey Sapozhnikov   29 Nov 2002 22:08:08 
 KOI2utf8   Ruslan Bondarev   28 Nov 2002 22:10:34 
 Re: KOI2utf8   Andrey Sapozhnikov   29 Nov 2002 18:03:29 
 KOI2utf8   Ruslan Bondarev   29 Nov 2002 21:53:47 
 Re: KOI2utf8   Timur Vafin   28 Nov 2002 19:39:30 
 Re: KOI2utf8   Victor Wagner   28 Nov 2002 19:51:54 
 KOI2utf8   Ruslan Bondarev   28 Nov 2002 09:58:06 
Архивное /ru.perl/657770ce42c0.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional