The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
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, 18:21 , 16-Июн-08 (1)
    Проверьте что кодировка соединения с постгресом совпадает с кодировкой скрипта. Если используется utf8, то попробуйте добавить use utf8 в блоке со строкой запроса, возможно стоит вынести ее в отдельную переменную, ну и наконец может понадобится жестко указать наличие/отсутствие utf8 в переменной через utf8::upgrade($bytestring) and utf8::downgrade($utf8string)

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

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

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

      • PostgreSQL UTF-8, !*! Vitaly_loki, 07:11 , 17-Июн-08 (3)
        >>Проверьте что кодировка соединения с постгресом совпадает с кодировкой скрипта. Если используется
        >>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, 08:11 , 17-Июн-08 (4)
          Все-таки лучше use utf8 ограничивать небольшим блоком, а не ставить глобально на скрипт. Наталкивался при работе с базой, что в пределах одного скрипта он в одном месте нужен, а в другом мешает.
          Мой ник к рок-группе Angra не имеет ни малейшего отношения, просто совпадение.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру