Уведомления

Группа в Telegram: @pythonsu

#1 Март 13, 2014 14:25:09

bmco@mail.ru
Зарегистрирован: 2014-03-11
Сообщения: 26
Репутация: +  0  -
Профиль   Отправить e-mail  

Как вывести данные из БД в правильной кодировке?

Здравствуйте!

Есть скрипт, который выводит записи из БД:

#!/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.

Подскажите, пожалуйста, как преобразовать кодировку в вышеуказанном скрипте для нормального вывода символов?

Отредактировано bmco@mail.ru (Март 13, 2014 15:07:51)

Прикреплённый файлы:
attachment screen.png (19,8 KБ)

Офлайн

#2 Март 13, 2014 14:43:34

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Как вывести данные из БД в правильной кодировке?

Офлайн

#3 Март 13, 2014 21:06:49

4kpt_II
От: Харьков
Зарегистрирован: 2013-10-24
Сообщения: 999
Репутация: +  58  -
Профиль   Отправить e-mail  

Как вывести данные из БД в правильной кодировке?

Блин. Ну легче же напилить на алхимии и не мучить свою карму плохими вибрациями
P.S. Хотя алхимия + sqlite имеет свои особенности…

Отредактировано 4kpt_II (Март 13, 2014 21:07:20)

Офлайн

#4 Март 13, 2014 22:45:45

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Как вывести данные из БД в правильной кодировке?

bmco@mail.ru
в sqlite нужно заносить строки в utf8, ибо доки. Не живете по правилам = имеете проблемы. Определитесь что именно у вас, если в БД действительно строки в cp1251, то при выводе делайте перекодирование. В вашем случае что то вроде такого:

decoder=lambda x: x.decode('cp1251')
...
print "<li>%s, %s</li>" % map(decoder, data)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version