Как изменить кодировку документа внутри Perl скрипта???

Раздел форума: 

Аватар пользователя admin

Автор темы: 

Rustam BOGUBAEV
Как изменить кодировку документа внутри Perl скрипта???

У меня проблема следующего рода:

если вы заглянете на http://www.kyrgyzstan.kg/news/ то там все ясно видно.

Ну а если в двух словах:

как можно изменить кодировку документа считываемого с сервера на www.lenta.ru в кодировке koi8-r и выдать в кодировке windows-1251 на своем сайте

Аватар пользователя В.Н.
делаешь запрос документа по HTTP, декодируешь его, показываешь...

С уважением, В.Н.

Аватар пользователя Dmitry Sheiko
Не самый красивый способ но работает:

вставь в свой скрипт следующие функции и замени в теле скрипта функцию print на blockout. Регулируй кодировку переменной окружения $code

sub blockout

{ local ($prstr)=@_;

if ($code eq "lat") { $xstr=&Transform($prstr); } else {$xstr=$prstr;}

print $xstr;

}

sub Transform()

{ ($str)=@_;

$source="йцукенгшщзхъфывапролджэячсмитьбю ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ";

local @latstr=split(/\./,"j.c.u.k.e.n.g.sh.w.z.x.~.f.y.v.a.p.r.o.l.d.zh.e'.ya.ch.s.m.i.t.'.b.yu. J.C.U.K.E.N.G.Sh.W.Z.X.~.F.Y.V.A.P.R.O.L.D.Zh.E'.Ya.Ch.S.M.I.T.'.B.Yu");

local @koistr=split(/\./,"К.Г.Х.Л.Е.О.З.Ы.Э.Ъ.И.Я.Ж.Щ.Ч.Б.Р.Т.П.М.Д.Ц.Ь.С.Ю. У.Н.Й.Ф.Ш.В.А.к.г.х.л.е.о.з.ы.э.ъ.и.я.ж.щ.ч.б.р.т.п.м.д.ц.ь.с.ю.у.н.й.ф.ш.в.а");

local @isostr=split(/\./,"Щ.ж.г.Ъ.Х.Э.У.и.й.Ч.е.к.д.л.Т.Р.Я.а.Ю.Ы.Ф.Ц.н.п.з.б. Ь.Ш.в.м.С.о.№.Ж.Г.є.µ.Ѕ.і.И.Й.·.Е.К.Д.Л.І.\°.ї.А.ѕ.».ґ.¶.Н.П.З.Б.ј.ё.В.М.±.О");

local @altstr=split(/\./,"©.ж.г.Є.Ґ.­.Ј.и.й.§.е.к.д.л.\ў.a.Ї.а.®.«.¤.¦.н.п.з.б.¬.Ё. в.м.Ў.о.‰.–.“.Љ.….Ќ.ѓ.

Аватар пользователя Алекс Дробыш
Скрипт Димы достаточно универсален, но в вашем случае (перевод из KOI в Win) можно обойтись одной строкой:

$str=~tr/бвчздецъйклмнопртуфхжигюыэящшьас БВЧЗДЕЦЪЙКЛМНОПРТУФХЖИГЮЫЭЯЩШЬАС/А-я/;

Аватар пользователя Rustam BOGUBAEV
Всем огромное спасибо за помощь !!!

вопрос уже решен с помощью библиотеки

Библиотека полезных функций для Perl. PVD

с сайта http://dpserver.virtualave.net/free.html