LINUX.ORG.RU

Чем вызвана такая вот ерунда....


0

0

Проблема в том, что python не понимает русских букв, если он читает их из базы данных или файла. Если просто написать print 'русский' то слово выведется нормально, а если прочитать текстовый файл и вывести его содержимое, то русские буквы будут в виде: \xf0\xf3\xf1\xf1\xea\xe8\xe9 Может питон знают не все, но может быть ктонибудь просто знает с чем это связано? Может с локалью там или еще чем?

★★

Попробывал. Все ОК proba.py: #!/usr/bin/python f.open('file','r') print f.read() f.close()

file: Привет Миру

#./proba.py Привет Миру

anonymous
()

Тааааааааааак, ну тогда я совсем ничего не понимаю... Вот если так делать:

f.open('file','r') print f.readlines() f.close()

То видим опять крокозяблы: \xf0\xf3\xf1\xf1\xea\xe8\xe9

Видимо это вызвано тем что ты считывал файл бинарно (f.read). Ну с файлом то может и можно работать бинарно, а с базой данных :) ??

LX ★★
() автор топика

а если делать print f.readlines()[0] - тогда все в порядке

ananas ★★★★★
()

Так, ну будем считать что с файлом мы разобрались... Хоть конечно это не есть хорошее решение... Ну да бог с ним. Может тогда существует и решение для Mysql базы данных?

import _mysql

db=_mysql.connect("host","login","pass","Data base") db.query("Select * from table") r=db.store_result() print r.fetch_row() # опять крокозяблы

в таблице table хранится русский текст

LX ★★
() автор топика

а fetch_row() что возвращает? если список или кортеж - тогда конечно крякозябры будут. а попробуй вывести из этого списка (кортежа) отдельный элемент(атрибут) - тогда он должен в нормальном виде вывестись.

ananas ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.