Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 3, 2009 10:46:29

Lyes
От:
Зарегистрирован: 2009-09-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

русская кодировка под убунту

добрый день. помогите новичку плз.
есть mysql живущий на убунте. есть таблица в бд с текстовым полем CHARACTER SET utf8. надо прочитать файлик в кодировке cp1251 и записать каждую строчку в табличку.
читается файлик нормально. а вот записать не получается:
WordFile = open (sys.argv, ‘r’)
for line in WordFile :
s = unicode(line, “cp1251”)
query=“insert into word (ordinary_spelling) values ('”+s+“')”
cursor.execute(query)

потом чтобы проверить запросом счиываю из бд и сохраняю в файл. вместо русских букв появляютя знаки ???
что делать, может кто подскажет?



Офлайн

#2 Сен. 3, 2009 13:13:58

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

русская кодировка под убунту

Что используете для коннекта к БД?
В случае mysqldb - нужно при указании DSN указать use_unicode



Офлайн

#3 Сен. 3, 2009 13:18:18

Lyes
От:
Зарегистрирован: 2009-09-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

русская кодировка под убунту

коннекчусь как обычно
connection = MySQLdb.connect(host='localhost', user='user1', passwd='123456', db='testdb',use_unicode = 1, charset = ‘utf8’)



Офлайн

#4 Сен. 3, 2009 14:41:18

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

русская кодировка под убунту

А можно код записи в файл?



Офлайн

#5 Сен. 3, 2009 14:46:58

Lyes
От:
Зарегистрирован: 2009-09-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

русская кодировка под убунту

целиком выглядит так:

WordFile = open (sys.argv, ‘r’)
for line in WordFile :
s = unicode(line, “cp1251”)
query=“insert into word (ordinary_spelling) values ('”+s+“')”
cursor.execute(query)
query=“select ordinary_spelling from word”
cursor.execute(query)
word = cursor.fetchone()
resFile = open (“lyes.test”, ‘w’)
resFile.write(word)
resFile.close()

соответственно файл записываю тоже стандартными методами



Офлайн

#6 Сен. 7, 2009 12:57:19

Lyes
От:
Зарегистрирован: 2009-09-03
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

русская кодировка под убунту

нашел что делать надо. мож кому понадобиться - кодировки надо выставить сначала:
cursor.execute('SET NAMES utf8')
cursor.execute('SET CHARACTER SET utf8')
cursor.execute('SET character_set_connection=utf8')



Офлайн

#7 Сен. 8, 2009 17:38:52

NSkrypnik
От:
Зарегистрирован: 2009-08-17
Сообщения: 39
Репутация: +  0  -
Профиль   Отправить e-mail  

русская кодировка под убунту

Имхо
строки
cursor.execute('SET CHARACTER SET utf8')
cursor.execute('SET character_set_connection=utf8')
лишние. Будет работать и просто с cursor.execute('SET NAMES utf8').



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version