2014-09-30 5 views
1

В моем процессе я разобрал google maps kml и передал его с perl в базу данных, через DBIx::Class.Что происходит с моими строками uft-8 в Postgresql?

Если я вытащил данные с помощью psql, все будет выглядеть нормально, но если я вытащу его через DBIx::Class, все символы utf-8 выглядят искалеченными.

Точно такой же процесс, выполненный в sqlite3, работает как шарм.

У меня есть pg_enable_utf8 включен на стороне клиента.

Кто-нибудь знает, почему это происходит?

+0

Точно как вы тянете его через «DBIx :: Class», любой код, чтобы продемонстрировать его? –

+2

Просьба ** показать ваш код **. Кроме того, в каком языке работает интерпретатор Perl? Вы прочитали [руководство для DBI :: Pg 'pg_enable_utf8'] (http://search.cpan.org/dist/DBD-Pg/Pg.pm#pg_enable_utf8_%28integer%29)? –

+0

Оказывается, он решается с помощью 'binmode (STDOUT,": utf8 ");' при печати на STDOUT и установки 'encoding =>" UTF-8 "на Catalyst. Интересно, почему это не было необходимо с sqlite. – simone

ответ

0

http://search.cpan.org/dist/DBIx-Class/lib/DBIx/Class/UTF8Columns.pm#Warning_-_Module_does_not_function_properly_on_create/insert

Если вы используете INSERT, то, возможно, выше предупреждение относится к процессу.

Кроме того, возможно, что ваш скрипт выполнит SET CLIENT_ENCODING TO 'value'; на сервере, где значение = UTF8. См. http://www.postgresql.org/docs/9.0/static/multibyte.html для получения дополнительной информации.