Forum Webscript.Ru

Программирование => Perl => Тема начата: Error202 от 26 Июля 2005, 13:52:17

Название: Perl - MySQL - Utf-8
Отправлено: Error202 от 26 Июля 2005, 13:52:17
Есть программа на Perl...
Она должна выдавать данные MySQL в кодировке utf-8...
В MySQLе есть несколько записей на русском...
MySQL по умолчанию имеет кодировку utf-8...

Почему данные отображаются скриптом как знаки вопросов?
Название: Perl - MySQL - Utf-8
Отправлено: Skif от 26 Июля 2005, 14:34:01
use locale?
Название: Perl - MySQL - Utf-8
Отправлено: NeoNox от 26 Июля 2005, 14:34:19
Где отображается?
Попробуй эту страницу прочесть как юникод Utf-8, может натолкнет на мысль...
Название: Perl - MySQL - Utf-8
Отправлено: Error202 от 26 Июля 2005, 15:08:14
Спасло


$dbh->do("SET character_set_results=\'utf8\'");


Правда теперь, при использовании

$text=substr($text,0,50);

Оставляет не 50 символов, а около 25 + последний какой-то кривой символ....

Можно ли как-нть подправить это?
Название: Perl - MySQL - Utf-8
Отправлено: AnnA от 26 Июля 2005, 15:44:05
посмотрите на модуль cyrillic. в нем есть конвертация вин то ютф и наоборот. в сочетании с
  $dbh->do(\'SET NAMES utf8\')              or die $DBI::errstr;

substr должен нормально работать. ;)
Название: Perl - MySQL - Utf-8
Отправлено: Error202 от 26 Июля 2005, 16:04:56
В том и засада, что нельзя использовать ни cyrillic, ни japanic, ни vietnamic...

Просто нужно чтобы программка оставалась рабочей при любых
языковых условиях...

Эта козлина воспринимает строку не как обычно, а каждый символ - 2 байта... В документации читал, что перл 5,8 нормально с юникодом...

Что делать не знаю...:(
Название: Perl - MySQL - Utf-8
Отправлено: Error202 от 26 Июля 2005, 16:28:42
Нашел решение:
Unicode::String

Всем спасибо...
Название: Perl - MySQL - Utf-8
Отправлено: NeoNox от 26 Июля 2005, 16:35:30
use bytes ?
Название: Perl - MySQL - Utf-8
Отправлено: Error202 от 26 Июля 2005, 16:49:37
Снова проблема...

В форме поиска ввожу русский текст, ответ: не найдено
Теоретически должен найти, phpmyadmin по такому же запросу находит...

Страница выдана пользователю в нужной кодировке...

Может ли перл принять данные в другой кодировке, чем отправил браузер?
Название: Perl - MySQL - Utf-8
Отправлено: Error202 от 27 Июля 2005, 13:00:44
Справился... :)

Есть снова вопрос!

Страница генерируется из MySQL в кодировке UTF-8...
В тексте страницы вставляется ссылка
http://server.ru/cgi-bin/script.pl?id=1&text=Вася
Так вот, когда в браузере кликаешь на эту ссылку, он выдет ошибку 400 - неверный ввод...

Что можно сделать?
Название: Perl - MySQL - Utf-8
Отправлено: glebushka от 27 Июля 2005, 16:39:47
Error202, никогда не использовать русские буквы в урлах.
Название: Perl - MySQL - Utf-8
Отправлено: Error202 от 28 Июля 2005, 08:54:14
Почему? Ведь обычно нормально работает...
В данном случае этот "Вася" отправляется в UTF-8 и с этим ошибка...

Но все равно спасибо... Выкрутился...