Автор Тема: Perl, DBI, MySQL, под Windows, проблема с русскими буквами  (Прочитано 3841 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн D.O.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 81
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.liveinternet.ru/users/info101
Стоит Perl 5.8.4, DBI 1.43, MySQL 4.0.13, Apache 2.0.50 всё под Windows XP SP2 (русский).
Ещё используется HTML::Template.

Гоняю тестовый скрипт, который получает данные из таблицы.
Вот фрагмент:
##########
my $q = "SELECT * FROM region";
$sth = $dbh->prepare($q) || die "Couldn\'t prepare statement: " . $dbh->errstr;
$sth->execute() || die "Couldn\'t execute statement: " . $sth->errstr;

while ($i = $sth->fetchrow_hashref()) {
     $regions .= $i->{id};
     $regions .= " ";
     $regions .= $i->{name};
     $regions .= "\\n";
}
##########

$regions заносится как значение переменной в шаблон HTML::Template и выводится.

Всё работает, но русские символы выводятся на странице в нечитаемом виде:
115 “«мп_®ўбЄ
116 “д
117 • _вл-Њ _бЁ©бЄ
118 —Ґ«пЎЁ_бЄ
119 џЄгвбЄ

Другие русские символы (текст не из базы данных), выводящиеся через template на той же самой

странице, выводятся нормально.
При этом в консоли MySQL всё выводится правильно:
| 116 | Уфа
| 117 | Ханты-Мансийск
| 118 | Челябинск
| 119 | Якутск

Запустил этот скрипт из командной строки, - всё наоборот, - русский текст, доставаемый из

базы данных, выводится правильно, а другой руский текст (не из базы) - неправильно.

Как заставить русский текст выводиться нормально?
Доска объявлений

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
он нормально выводится.
кодировка в командной строке и браузере по умолчанию разная. поэтому в одном месте они нормально читаются, в другом нет
ну, будем исповедоваться?

Оффлайн D.O.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 81
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.liveinternet.ru/users/info101
Отлично. А как принудительно установить кодировку 1251 и для того, и для другого?
Доска объявлений

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
что значит "и для того и для другого"? выбери кодировку, в которой ты хочешь это дело хранить. при выводе перекодируй налету.
ну, будем исповедоваться?

Оффлайн D.O.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 81
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.liveinternet.ru/users/info101
Теперь понятно. У меня MySQL хранит информацию в DOS\'овской кодировке.
А есть какой-нибудь готовый модуль для перевода между различными русскими кодировками?
Доска объявлений

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
The documentations is your friend

Оффлайн Green Kakadu

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2757
  • +1/-0
  • 0
    • Просмотр профиля
    • http://gnezdo.webscript.ru
а может проще тогда на странице везде прописать DOSовскую кодировку? Какая разница, учитывая что на localhoste?
 в исканиях.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
NeoNox
Green Kakadu
:)
SET CLIENT_ENCODING TO \'WIN\'
And no religion too...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28