Найти - Пользователи
Полная версия: Вопрос новичка: python и русские буквы.
Начало » Базы данных » Вопрос новичка: python и русские буквы.
1
xander
Господа,
если не трудно, помогите новичку.

Платформа - linux
Написал я скрипт.
Читает он из базы (SQLite) энное количество строк в utf-8,
а затем пишет эти строки в файл.

Так вот.
Читать-то он читает, но потом, при записи в файл (или раньше?) кодирует строку utf-8
в строку вида \u0440\u0435\u0442\u043d\u043e

Как мне записать в файл исходный utf-8? Хотя, лучше, конечно, если это будет koi8-r.


читаю из базы так:

cursor = db.cursor()
sql = ‘SELECT txt FROM tbl;’
cursor.execute(sql)
row = cursor.fetchone()
str = row

Пишу в файл так:

texfile = open(“/tmp/file”, ‘w+’)
pickle.dump(str, file)

Кстати, если не трудно, почему вызывает ошибку такая конструкция:
texfile.write(“чего-нить по-русски”)

Заранее спасибо.
evgenyl
“\u0440\u0435\u0442\u043d\u043e” - это и есть сериализованная юникодная строка
evgenyl
1)модуль pickle сохраняет объекты, а не просто пишет в файл
2)по умолчанию файл бинарный поэтому попытка записать юникодную строку texfile.write(“чего-нить по-русски”) будет ошибкой

нужно сделать специальный файл

import codecs
f=codecs.open(“/tmp/file”,'w+','UTF-8')
f.write('Привет мир')

или так

import codecs
f=codecs.open(“/tmp/file”,'w+','koi8-r')
f.write('Привет мир')

преобразование из юникода в koi8-r будет автоматическое
главное не забывай ставить вначале файла метку для питона
# -*- coding: UTF-8 -*-
она указывает питону в какой кодировке ты написал русские буквы в программе
эти данные ему необходимы для того чтобы чётко знать что во что перекодировать
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