Следующий вопрос о русской кодировке, mssql и python - PullRequest
0 голосов
/ 08 июля 2010

Следующий вопрос о русской кодировке, 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 Кодировка: ????? ?????? * ??????? 1006 *

Я не могу читать файлы русского varchar из MSSQL. Но когда я просто печатаю строку в одном и том же коде, все в порядке, это выдает мне нормальные русские символы Кто знает как?

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

1 Ответ

2 голосов
/ 08 июля 2010

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

...