Найти - Пользователи
Полная версия: Как вывести данные из БД в правильной кодировке?
Начало » Python для новичков » Как вывести данные из БД в правильной кодировке?
1
bmco@mail.ru
Здравствуйте!

Есть скрипт, который выводит записи из БД:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sqlite3 as db
print "Content-Type: text/html; charset=utf-8\n"
print "<html><head><title>Page</title></head>"
print "<body>"
print "<h1>Books Boo</h1>"
print "<a href="">TOP-10 книг</a>"
print "<ul>"
connection = db.connect('/Python27/cgi-bin/books_db.db')
cursor = connection.cursor()
connection.text_factory = str
sql = """SELECT name, author FROM books_t ORDER BY rating DESC LIMIT 10"""
cursor.execute(sql)
for data in cursor.fetchall():
   print "<li>%s, %s</li>" % data
print "</ul>"
print "</body></html>"
connection.close()

В результате работы скрипта, в браузере отображается страница с крякозябрами - знаки ��������. (см. вложение - скриншот)

Скорее всего это значит, что текст базы в кодировке cp1251, а браузер его выводит как utf-8.

Подскажите, пожалуйста, как преобразовать кодировку в вышеуказанном скрипте для нормального вывода символов?
Singularity
4kpt_II
Блин. Ну легче же напилить на алхимии и не мучить свою карму плохими вибрациями
P.S. Хотя алхимия + sqlite имеет свои особенности…
JOHN_16
bmco@mail.ru
в sqlite нужно заносить строки в utf8, ибо доки. Не живете по правилам = имеете проблемы. Определитесь что именно у вас, если в БД действительно строки в cp1251, то при выводе делайте перекодирование. В вашем случае что то вроде такого:
decoder=lambda x: x.decode('cp1251')
...
print "<li>%s, %s</li>" % map(decoder, data)
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