URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5811
[ Назад ]

Исходное сообщение
"PostgreSQL UTF-8"

Отправлено Vitaly_loki , 16-Июн-08 15:35 
Система FreeBSD 5.3, Apache-2.2.8, Perl-5.10.0, DBI-1.602, DBD-Pg-2.8.1, PostgreSQL-8.3.3

Делаю такой запрос из cgi-скрипта (на Перле):
$sth1 = $dbh->prepare ("SELECT 'Всего', ROUND(SUM(bytes)/1024, 2), ROUND(SUM(bytes)/1024/1024, 2) FROM traffic WHERE date_part('month',date) = $month_ch

Кодировка utf8
Вместо слова "всего" выводятся крякозябры, все уже испробывал:
база данных создана в кодировке UTF8;
переменные окружения ru_RU.UTF-8

Ну не хочет кириллицу нормально показывать и все. Причем со всеми другими кодировками работает нормально. В UTF8 русский текст из самого скрипта в браузер отсылаются корректно, а вот в БД нет. Причем по логам видно, что Постгресу передаются уже кракозябры, т.е. скрипт передает БД кракозябры. Через EMS PostgreSQL Manager все происходит нормально


Содержание

Сообщения в этом обсуждении
"PostgreSQL UTF-8"
Отправлено angra , 16-Июн-08 18:21 
Проверьте что кодировка соединения с постгресом совпадает с кодировкой скрипта. Если используется utf8, то попробуйте добавить use utf8 в блоке со строкой запроса, возможно стоит вынести ее в отдельную переменную, ну и наконец может понадобится жестко указать наличие/отсутствие utf8 в переменной через utf8::upgrade($bytestring) and utf8::downgrade($utf8string)


"PostgreSQL UTF-8"
Отправлено Vitaly_loki , 17-Июн-08 07:06 
>Проверьте что кодировка соединения с постгресом совпадает с кодировкой скрипта. Если используется
>utf8, то попробуйте добавить use utf8 в блоке со строкой запроса

Я просто в перл-скрипте объявил так: use utf8 и все заработало :)
Спасибо большое, знал же что дело не в СУБД, ибо через всякие менеджерыSQL кодировка корректная, именно perl-скрипт отсылал уже исковерканный текст

Спасибо огромное еще раз :)


"PostgreSQL UTF-8"
Отправлено Vitaly_loki , 17-Июн-08 07:11 
>>Проверьте что кодировка соединения с постгресом совпадает с кодировкой скрипта. Если используется
>>utf8, то попробуйте добавить use utf8 в блоке со строкой запроса
>
>Я просто в перл-скрипте объявил так: use utf8 и все заработало :)
>
>Спасибо большое, знал же что дело не в СУБД, ибо через всякие
>менеджерыSQL кодировка корректная, именно perl-скрипт отсылал уже исковерканный текст
>
>Спасибо огромное еще раз :)

Т.е. написал вначале такое:
#! /usr/bin/perl -w

use strict;
use CGI qw/:all/;
use DBI;
use utf8;

Клево, все работает :) Спасибо, Ангра :) Кстати, клевая группа "Angra" :)


"PostgreSQL UTF-8"
Отправлено angra , 17-Июн-08 08:11 
Все-таки лучше use utf8 ограничивать небольшим блоком, а не ставить глобально на скрипт. Наталкивался при работе с базой, что в пределах одного скрипта он в одном месте нужен, а в другом мешает.
Мой ник к рок-группе Angra не имеет ни малейшего отношения, просто совпадение.

"PostgreSQL UTF-8"
Отправлено kabasik , 17-Июн-08 10:32 

>Мой ник к рок-группе Angra не имеет ни малейшего отношения, просто совпадение.

  Есть подозрение что "Lavr" = "Angra". Судя по знаниям... :)