2010-07-08 2 views
0

다음 russian 인코딩, mssql 및 파이썬에 관한 질문. 다음 russian 인코딩, 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() 

내가 오류를 얻을 :

나는이 간단한 코드가 조회 오류 : Unnown 인코딩 : ????? ?????? ???????

나는 MSSQL에서 러시아어 varchar 파일을 읽을 수 없습니다. 하지만 난 그냥 같은 코드에서 문자열을 인쇄 할 때 모두 괜찮습니다, 그것은 일반 러시아어 문자를 날 인쇄. 누가 알 수 있습니까?

나는 단지 오류가 발생하지 않는 것보다 인쇄본을 h 인쇄하는 편이 좋지만, 인쇄는 날 ???????? ?????????

+0

많은 유사한 질문을하지 마십시오. 데이터베이스 항목을 가져 오기 전에, 맨 처음부터 시작하여'print u "абвгдежзийкл"작업을해야합니다. 이것은 Windows에서 충분히 어려울 것으로 보입니다. – Philipp

+0

이것은 실제로 다른 문제입니다. 내가 "абвгдежзийкл"을 인쇄 할 때 나에게 абвгдежзийкл를 주지만 데이터베이스에서 내 데이터를 인쇄 할 때 나에게주는 것은 ?? ??????????????????????????? – Pol

+0

다른 스레드에서 작동하지 않는다고 명시했습니다. – Philipp

답변

2

codecs.lookup은 임의의 문자열이 아닌 인코딩 이름을 사용하므로 어쨌든 여기서는 필요하지 않습니다. 필자는 현재 기술 문제로 인해 Python에서 Windows 콘솔로 유니 코드 문자열을 안정적으로 인쇄 할 수 없다고 생각합니다. 파일에 직접 쓰거나 WriteConsoleW 기능을 직접 사용하십시오 (ctypes 통해).

+0

도움이되지 않습니다. 파일에 글을 써 보았습니다. 파일에서 나는 같은 물음표를 얻는다. – Pol

+0

아마 당신은 어떤 유형의 인코딩이 mssql 서버에 응답을 보내는 지 알고 있습니까? – Pol

+0

아니요. 리터럴 문자열로 작업 할 때 이미 오류가 발생하는 경우 아직 중요하지 않습니다. – Philipp