crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Python + кодировка (консоль, файл)
Гость_Я_*
сообщение 28.12.2010, 9:55
Сообщение #1





Гости








    


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

Заранее благодарен за ответ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Я_*
сообщение 28.12.2010, 10:22
Сообщение #2





Гости








    


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

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

не работает ни один.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Я_*
сообщение 28.12.2010, 10:26
Сообщение #3





Гости








    


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


как ни странно - заработало. Проблема, теперь получается, в выборе данных из БД. Может кто с NySQLdb работал?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Я_*
сообщение 28.12.2010, 12:55
Сообщение #4





Гости








    


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

#!/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
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


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

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 21:05