Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Интерпретируемые языки _ Python + кодировка (консоль, файл)

Автор: Я 28.12.2010, 9:55

Привет всем.
Пишу на Python под freebsd. Стокнулся с проблемой кодирования (а точнее перекодирования) вывода из БД. Суть та, что из БД данные выбираются, но отображаются как ?????????. По началу думал, что в терминале кодировка тупая, но оказалось что при записи в файл та же проблема (пишется именно 3F символ). Как сменить кодировку?
гуглил, не нашел, толи я гуглить не умею, толи на гугле меня забанить успели.

Заранее благодарен за ответ.

Автор: Я 28.12.2010, 10:22

Нашел примеры, что должно помочь:

  #!/usr/bin/python
          # -*- coding: latin-1 -*-
          import os, sys
          ...

только кодировку выставиьт правильно надо и еще это:
  #!/usr/local/bin/python
          # coding: latin-1
          import os, sys
          ...

не работает ни один.

Автор: Я 28.12.2010, 10:26

Сделал так:

# cat test.py
#!/usr/bin/env python
# coding: koi8-r
print "Привет, мир!"


как ни странно - заработало. Проблема, теперь получается, в выборе данных из БД. Может кто с NySQLdb работал?

Автор: Я 28.12.2010, 12:55

Вопрос решился чтением мануала. Решение получил такое:

#!/usr/bin/env python
# -*- coding: koi8-r -*-

import MySQLdb

local = MySQLdb.connect (host = "localhost", user = "root", passwd = "root_passwd", db = "mydb", charset = "koi8r", use_unicode = False)

local_cursor = local.cursor (MySQLdb.cursors.DictCursor)
local_cursor.execute ("SELECT * FROM my_table")

result_set_local = local_cursor.fetchall ()
for local_row in result_set_local:
  print str(local_row['russian'])


# -*- coding: koi8-r -*- - следует использовать для вывода результата в консоль.

Отписал в своем блоге Laa88.blog.ru

Автор: Litkevich Yuriy 29.12.2010, 11:43

Цитата(Гость_Я_* @ 28.12.2010, 12:22) *
# -*- coding: latin-1 -*-
вообще это кодировка исходника, которую рекомендуют всегда явно указывать.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)