* [Comm] Perl unicode
@ 2004-10-21 9:18 Stanislav Yadykin
2004-10-22 8:48 ` Stanislav Yadykin
2004-10-22 14:25 ` Alexey Tourbin
0 siblings, 2 replies; 8+ messages in thread
From: Stanislav Yadykin @ 2004-10-21 9:18 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 1871 bytes --]
Добрый день!
Поскольку у моего аплинка временная проблема с ru.perl, решил написать сюда,
возможно кто-то сталкивался/знает.
Есть программа:
==============================
use Net::Jabber qw(Client);
use Text::Iconv;
my $jabber = new Net::Jabber::Client;
$jabber->Connect(hostname => 'host');
my @status = $jabber->AuthSend(
'username' => 'user',
'password' => 'password',
'resource' => 'client'
);
$jabber->PresenceSend('type' => 'available');
$jabber->SetCallBacks('message' => \&JabberGetMessage);
while($jabber->Process){ 1; }
sub fUni {
my $conv = Text::Iconv->new('utf8', 'windows-1251');
return $conv->convert(shift);
}
sub tUni {
my $conv = Text::Iconv->new('windows-1251', 'utf8');
return $conv->convert(shift);
}
sub JabberGetMessage {
my $id = shift;
my $message = shift;
my $from = fUni($message->GetFrom);
my $subj = fUni($message->GetSubject);
my $body = fUni($message->GetBody);
$jabber->MessageSend(
To => 'newuser@newhost',
Subject => tUni($subj),
Body => tUni($body)
)
}
==============================
При отсылке жаббером текста "тест", проходя через этот "жаббер-прокси"
приходит в виде "Ñ,еÑÑ,", т.е. почему-то проходит двойную конертацию в
юникод. Если процедуру JabberGetMessage переписать в виде
sub JabberGetMessage {
my $id = shift;
my $message = shift;
$jabber->MessageSend(
To => 'newuser@newhost',
Subject => $message->GetSubject,
Body => $message->GetBody
)
}
то к клиенту возвращается нормальный "тест". В чем может быть проблема?
--
Stanislav Yadykin
[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Comm] Perl unicode
2004-10-21 9:18 [Comm] Perl unicode Stanislav Yadykin
@ 2004-10-22 8:48 ` Stanislav Yadykin
2004-10-22 13:58 ` [Comm] " Alexey Tourbin
2004-10-22 14:25 ` Alexey Tourbin
1 sibling, 1 reply; 8+ messages in thread
From: Stanislav Yadykin @ 2004-10-22 8:48 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 618 bytes --]
В сообщении от Четверг, 21-Окт-2004 12:18 Stanislav Yadykin написал(a):
> При отсылке жаббером текста "тест", проходя через этот "жаббер-прокси"
> приходит в виде "Ñ,еÑÑ,", т.е. почему-то проходит двойную конертацию в
> юникод. Если процедуру JabberGetMessage переписать в виде
perl bug?
Почему он за меня решает, включать ему use utf8 или нет?
в багзиллу?
--
Stanislav Yadykin
ALT Linux Team
[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Comm] Re: Perl unicode
2004-10-22 8:48 ` Stanislav Yadykin
@ 2004-10-22 13:58 ` Alexey Tourbin
2004-10-22 14:51 ` Stanislav Yadykin
0 siblings, 1 reply; 8+ messages in thread
From: Alexey Tourbin @ 2004-10-22 13:58 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 552 bytes --]
On Fri, Oct 22, 2004 at 11:48:24AM +0300, Stanislav Yadykin wrote:
> В сообщении от Четверг, 21-Окт-2004 12:18 Stanislav Yadykin написал(a):
> > При отсылке жаббером текста "тест", проходя через этот "жаббер-прокси"
> > приходит в виде "??,??µ??????,", т.е. почему-то проходит двойную конертацию в
> > юникод. Если процедуру JabberGetMessage переписать в виде
>
> perl bug?
> Почему он за меня решает, включать ему use utf8 или нет?
use utf8 -- это не то, что вы подумали.
> в багзиллу?
>
> --
> Stanislav Yadykin
> ALT Linux Team
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Comm] Re: Perl unicode
2004-10-22 13:58 ` [Comm] " Alexey Tourbin
@ 2004-10-22 14:51 ` Stanislav Yadykin
0 siblings, 0 replies; 8+ messages in thread
From: Stanislav Yadykin @ 2004-10-22 14:51 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 1528 bytes --]
В сообщении от Пятница, 22-Окт-2004 16:58 Alexey Tourbin написал(a):
> On Fri, Oct 22, 2004 at 11:48:24AM +0300, Stanislav Yadykin wrote:
> > В сообщении от Четверг, 21-Окт-2004 12:18 Stanislav Yadykin написал(a):
> > > При отсылке жаббером текста "тест", проходя через этот "жаббер-прокси"
> > > приходит в виде "??,??µ??????,", т.е. почему-то проходит двойную
> > > конертацию в юникод. Если процедуру JabberGetMessage переписать в виде
> >
> > perl bug?
> > Почему он за меня решает, включать ему use utf8 или нет?
>
> use utf8 -- это не то, что вы подумали.
Я подумал правильно, выразился криво :)
Почему тогда возникает такая же ситуация с выводом апача (mod_perl), когда
где-то используется XML::Parser? Стоило только SOAP::Lite указать
использовать вместо XML::Parser XML::Parser::Lite, как такая же перекодировка
вывода пропала.
Я просто не могу найти ту точку или решение, на которое в данном случае стоит
обратить винмание чтобы снять этот вопрос.
--
Stanislav Yadykin
ALT Linux Team
[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Comm] Re: Perl unicode
2004-10-21 9:18 [Comm] Perl unicode Stanislav Yadykin
2004-10-22 8:48 ` Stanislav Yadykin
@ 2004-10-22 14:25 ` Alexey Tourbin
2004-10-22 14:50 ` Stanislav Yadykin
2004-10-25 6:00 ` Mike Lykov
1 sibling, 2 replies; 8+ messages in thread
From: Alexey Tourbin @ 2004-10-22 14:25 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 952 bytes --]
On Thu, Oct 21, 2004 at 12:18:27PM +0300, Stanislav Yadykin wrote:
> При отсылке жаббером текста "тест", проходя через этот "жаббер-прокси"
> приходит в виде "??,??µ??????,", т.е. почему-то проходит двойную конертацию в
> юникод. Если процедуру JabberGetMessage переписать в виде
>
> sub JabberGetMessage {
> my $id = shift;
> my $message = shift;
> $jabber->MessageSend(
> To => 'newuser@newhost',
> Subject => $message->GetSubject,
> Body => $message->GetBody
> )
> }
>
> то к клиенту возвращается нормальный "тест". В чем может быть проблема?
Лучше не использовать Text::Iconv вместе с нативным utf8.
По крайней мере нижеследующее у меня не работает:
$ perl -MText::Iconv -le 'my $text="текст"; utf8::encode $text; print Text::Iconv->new("utf8", "windows-1251")->convert($text)'
$
Может быть дело в том, что XML::Stream использует
use open ':utf8'
Кто знает...
> --
> Stanislav Yadykin
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Comm] Re: Perl unicode
2004-10-22 14:25 ` Alexey Tourbin
@ 2004-10-22 14:50 ` Stanislav Yadykin
2004-10-22 15:58 ` Alexey Tourbin
2004-10-25 6:00 ` Mike Lykov
1 sibling, 1 reply; 8+ messages in thread
From: Stanislav Yadykin @ 2004-10-22 14:50 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 1268 bytes --]
В сообщении от Пятница, 22-Окт-2004 17:25 Alexey Tourbin написал(a):
> Лучше не использовать Text::Iconv вместе с нативным utf8.
> По крайней мере нижеследующее у меня не работает:
>
> $ perl -MText::Iconv -le 'my $text="текст"; utf8::encode $text; print Text::Iconv->new("utf8", "windows-1251")->convert($text)'
Ээээ... вообще-то
utf8::encode($string)
Converts in-place the octets of the $string to the octet sequence in Perl's
UTF-X encoding. Returns nothing. Note that this does not change the "type" of
$string to UTF-8, and that this handles only ISO 8859-1 (or EBCDIC) as the source
character set. Therefore this should not be used to convert a legacy 8-bit encoding
to Unicode: use Encode::decode() for that.
А вот если
-(~:$)-> perl "-MEncode('from_to')" -MText::Iconv -le 'my $text="текст"; from_to($text, "windows-1251", "utf8"); print Text::Iconv->new("utf8", "windows-1251")->convert($text)'
текст
> Может быть дело в том, что XML::Stream использует
> use open ':utf8'
Смотрел, но подобного ничего нет.
--
Stanislav Yadykin
ALT Linux Team
[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Comm] Re: Perl unicode
2004-10-22 14:50 ` Stanislav Yadykin
@ 2004-10-22 15:58 ` Alexey Tourbin
0 siblings, 0 replies; 8+ messages in thread
From: Alexey Tourbin @ 2004-10-22 15:58 UTC (permalink / raw)
To: community
[-- Attachment #1: Type: text/plain, Size: 907 bytes --]
On Fri, Oct 22, 2004 at 05:50:56PM +0300, Stanislav Yadykin wrote:
> А вот если
> -(~:$)-> perl "-MEncode('from_to')" -MText::Iconv -le 'my $text="текст"; from_to($text, "windows-1251", "utf8"); print Text::Iconv->new("utf8", "windows-1251")->convert($text)'
> текст
Да, так правильно.
> > Может быть дело в том, что XML::Stream использует
> > use open ':utf8'
> Смотрел, но подобного ничего нет.
$ rpm -qR perl-Net-Jabber |grep Stream
perl(XML/Stream.pm) >= 0:1.18
$ rpm -ql perl-XML-Stream |xargs grep utf8
/usr/lib/perl5/vendor_perl/XML/Stream.pm: eval("use open ':utf8';");
/usr/lib/perl5/vendor_perl/XML/Stream/Parser.pm: eval("use open ':utf8';");
/usr/lib/perl5/vendor_perl/XML/Stream/Parser.pm: open(FILE,"<:utf8",$fileName);
/usr/share/doc/perl-XML-Stream-1.21/CHANGES: that the outgoing data is utf8.
$
> --
> Stanislav Yadykin
> ALT Linux Team
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Comm] Re: Perl unicode
2004-10-22 14:25 ` Alexey Tourbin
2004-10-22 14:50 ` Stanislav Yadykin
@ 2004-10-25 6:00 ` Mike Lykov
1 sibling, 0 replies; 8+ messages in thread
From: Mike Lykov @ 2004-10-25 6:00 UTC (permalink / raw)
To: community
В сообщении от Пятница 22 Октябрь 2004 19:25 Alexey Tourbin написал:
> Лучше не использовать Text::Iconv вместе с нативным utf8.
> По крайней мере нижеследующее у меня не работает:
>
> $ perl -MText::Iconv -le 'my $text="текст"; utf8::encode $text; print
> Text::Iconv->new("utf8", "windows-1251")->convert($text)'
my $converter=Text::Iconv->new('UTF-8', 'KOI8-R');
my $converted=$converter->convert($toconvert);
У меня работает.
--
Mike Lykov
Samara, "Vesna" parfum company, System administrator
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2004-10-25 6:00 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-10-21 9:18 [Comm] Perl unicode Stanislav Yadykin
2004-10-22 8:48 ` Stanislav Yadykin
2004-10-22 13:58 ` [Comm] " Alexey Tourbin
2004-10-22 14:51 ` Stanislav Yadykin
2004-10-22 14:25 ` Alexey Tourbin
2004-10-22 14:50 ` Stanislav Yadykin
2004-10-22 15:58 ` Alexey Tourbin
2004-10-25 6:00 ` Mike Lykov
ALT Linux Community general discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
public-inbox-index community
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.community
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git