Найти - Пользователи
Полная версия: PostgreSQL, PL/Python и кодировка
Начало » Python для новичков » PostgreSQL, PL/Python и кодировка
1
devSaracen
Здравствуйте. Пытаюсь реализовать функцию на PL/Python(PostgreSQL 9.5, Python 2.7). Так вот никак не могу сработаться с кириллическими функциями. Ниже собственно код:

     CREATE OR REPLACE FUNCTION pytest ()
    RETURNS varchar
    AS $$
    import os, pymorphy2, sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
  
    morph = pymorphy2.MorphAnalyzer()
    word = morph.parse(u'смартфоны')[0];
    return word.word
    $$ LANGUAGE plpython2u;


При вызове функции возвращает постоянно нижеприведенную крякозябру.

 ñð¼ð°ñ€ñ‚ñ„ð¾ð½ñ‹

При этом и в repr().decode('unicode_escape') оборачивал, и вручную кодировал/декодировал. Все равно крякозябры, правда уже другие. При этом если загнать в переменную какой либо слово на кириллице, то выводится все норм. Может кто сталкивался? БД у меня в UTF8(en_US.UTF-8). В чем может быть проблема, ума ни приложу. Помогите, пожалуйста.
ZerG
по стандарту делайте

      CREATE OR REPLACE FUNCTION pytest ()
    RETURNS varchar
    AS $$
    # -*- coding: utf-8 -*-
    import os, pymorphy2, sys
    reload(sys)
   
  
    morph = pymorphy2.MorphAnalyzer()
    word = morph.parse(u'смартфоны')[0];
    return word.word
    $$ LANGUAGE plpython2u;

А далее смотрите какая кодировка самой базы данных и таблиц
Ну и собственно ваш клиент - его настройки!
У меня прекрасно все работает в данной связке.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB