Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Проблема с кодировкой


Автор: DEER 21.11.2005, 09:49
Здравствуйте.

Раньше был Perl версии 5.005(вроде так), была проблема, что при вводе\выводе строк на русском языке, получалась абракадабра, пробовал создавать CGI программки, там всё выводилось нормально.

Сейчас переставил perl на версию 5.8.7,
и теперь и ввод\вывод в консоль, и запросы на выборку\обновление из бд (MySQL 5) и вывод в CGI программках, везде русские символы коряво отображаются smile
Хотя если в Броузере поменять кодировку у уже сгенерированной страницы, то всё отображается нормально.

Есть ли в Perl возможность сделать так, чтобы нормально работать с русскими символами?? smile

Автор: korob2001 21.11.2005, 10:38
Для CGI программ использующих CGI.pm указываешь заголовок следующим образом
Код

print $cgi->header( -charset => "Windows-1251" );

Для CGI программ не использующих CGI.pm, такой заоголовок:
Код

print "Content-Type: text/html;charset=windows-1251\n\n";

Для того, что бы в терминал выводить сообщения на русском языке, читай тему:
http://forum.vingrad.ru/index.php?showtopic=55677

А вообще подобных тем немеренно, пользуйся поиском.

Автор: DEER 21.11.2005, 11:13
Спасибо!!
как я понял из
http://forum.vingrad.ru/index.php?showtopic=55677
из БД данные у меня приходят нормальные(потому что у меня все поля в БД прописаны как cp1251)
а уже при выводе они искажаются
Я правильно понял??

Автор: Kannabismus 21.11.2005, 23:07
Попробуй после коннекта сделать
Код

$dbh->do("SET character_set_client = cp1251");
$dbh->do("SET character_set_connection = cp1251");
$dbh->do("SET character_set_results = cp1251");


Автор: DEER 28.11.2005, 17:32
Спасибо всем!
Возник вопрос, а то что я везде понаставил кодировку cp1251 отразится на работе программы, если её запускать под unix'ом? нужны ли там все эти преобразования?

Автор: Kiber_rat 28.11.2005, 20:26
Это зависит от многих факторов. акой WEB сервер стоит (Apache, русский Apache или еще что-то), в какой кодировке у тебя создавались скрипты (точнее русский в них). Еси на сервере стоит обычный (не русский) апач то все должно работать без модификаций... по идее smile

Автор: sharq 29.11.2005, 10:27
DEER если будешь запускать из-под консоли, в которой cp1251 - не установлен, то будет абрракадабрра, а вообще у тебя cgi-скрипт, поэтому если у тебя в заголовке та же кодировка, что и при выводе из БД, то проблем быть не должно.

smile

Автор: DEER 1.12.2005, 10:58
Народ, а как вам такой расклад:
БД в кодировке latin1
CGI нужно чтоб выводил с cp1251

Пытаюсь сделать так
Код

use Encode;
.....
my $sss = $ref->{'Name'};
       Encode::from_to($sss, "latin1", "cp1251"); print br;
        print $sss;

Выыодит нечто похожее на ????????

как лечится? не знаете?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)