Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Python + кодировка (консоль, файл)
Форум на CrossPlatform.RU > Разработка > Интерпретируемые языки
Я
Привет всем.
Пишу на Python под freebsd. Стокнулся с проблемой кодирования (а точнее перекодирования) вывода из БД. Суть та, что из БД данные выбираются, но отображаются как ?????????. По началу думал, что в терминале кодировка тупая, но оказалось что при записи в файл та же проблема (пишется именно 3F символ). Как сменить кодировку?
гуглил, не нашел, толи я гуглить не умею, толи на гугле меня забанить успели.

Заранее благодарен за ответ.
Я
Нашел примеры, что должно помочь:
  #!/usr/bin/python
          # -*- coding: latin-1 -*-
          import os, sys
          ...

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

не работает ни один.
Я
Сделал так:
# cat test.py
#!/usr/bin/env python
# coding: koi8-r
print "Привет, мир!"


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

#!/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
Цитата(Гость_Я_* @ 28.12.2010, 12:22) *
# -*- coding: latin-1 -*-
вообще это кодировка исходника, которую рекомендуют всегда явно указывать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.