2010-07-08 1 views
0

Следующий вопрос о русской кодировке, mssql и python.Следующий вопрос о русской кодировке, mssql и python

У меня есть этот простой код:

import pymssql 
import codecs 
conn=pymssql.connect(host='localhost:1433', user='sa', password='password', database='TvPgms') 
cur = conn.cursor() 
cur.execute('SELECT TOP 5 CAST(Name AS nvarchar(400)), CONVERT(nvarchar(400), idProgram) FROM dbo.Programs') 
p=cur.fetchone() 
h=p[0] 
d=codecs.lookup(h) 
print h 
conn.close() 

я получаю ошибку: Ошибка Lookup: Unnown Encoding: ????? ?????? ???????

I can not reed russian varchar filds из MSSQL. Но когда я просто печатаю строку в том же коде, все в порядке, оно печатает мне нормальные русские символы. Кто знает, как?

Если я прав, просто распечатаю h insted codecs.lookup, чем у меня нет ошибки, но он печатает меня ???????? ?????????

+0

Пожалуйста, не открывайте, что многие подобные вопросы. Прежде чем пытаться извлечь записи базы данных, вы должны начать с самого начала и получить 'print u" абвгдежзийкл "для работы, что, похоже, достаточно сложно для Windows. – Philipp

+0

Это действительно другая проблема. Когда я печатаю «абвгдежзийкл», это дает мне абвгдежзийкл, но когда я печатаю свои данные из базы данных, это дает мне ?????????????????????????? – Pol

+0

В другой теме вы заявили, что это не сработает. – Philipp

ответ

2

codecs.lookup принимает имя кодировки, а не какую-то случайную строку, и вам, вероятно, в любом случае это не нужно. Я думаю, что на данный момент вы не можете надежно печатать строки Unicode с Python на консоль Windows из-за глубоких технических проблем. Попробуйте записать файл или использовать функцию WriteConsoleW напрямую (через ctypes).

+0

Это не помогает, я пробовал писать в файле. В файле я получаю те же вопросительные знаки. – Pol

+0

Может быть, вы знаете, какой тип кодирования посылает мне mssql сервер? – Pol

+0

Нет, и если при попытке работать с буквальными строками уже есть ошибки, это еще не имеет значения. – Philipp

 Смежные вопросы

  • Нет связанных вопросов^_^