Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 8, 2016 20:35:35

devSaracen
Зарегистрирован: 2016-12-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

PostgreSQL, PL/Python и кодировка

Здравствуйте. Пытаюсь реализовать функцию на 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). В чем может быть проблема, ума ни приложу. Помогите, пожалуйста.

Офлайн

#2 Дек. 9, 2016 08:08:06

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

PostgreSQL, PL/Python и кодировка

по стандарту делайте

      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;

А далее смотрите какая кодировка самой базы данных и таблиц
Ну и собственно ваш клиент - его настройки!
У меня прекрасно все работает в данной связке.



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version