2010-07-08 60 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() 

我得到的错误:查找错误:Unnown编码:????? ?????? ???????

我不能从MSSQL芦苇俄罗斯VARCHAR filds。但是,当我只是在相同的代码中打印字符串一切正常,它打印我正常的俄罗斯字符。 谁知道如何?

如果我修整只是打印^ h insted的codecs.lookup比我没有得到任何错误,但它打印我???????? ?????????

+0

请不要打开,很多类似的问题。在尝试获取数据库条目之前,您必须从一开始就开始使用'print u“абвгдежзийкл”'工作,这在Windows中似乎已经够难了。 – Philipp 2010-07-08 16:22:20

+0

这真的是另一个问题。当我打印U“абвгдежзийкл”它给了我абвгдежзийкл,但是当我从数据库打印我的数据它给了我?????????????????????????? – Pol 2010-07-08 16:28:55

+0

在另一个线程中,你说它不起作用。 – Philipp 2010-07-08 16:33:00

回答

2

codecs.lookup使用一个编码名称,而不是一些随机字符串,你可能不需要在这里反正。我认为目前由于深层的技术问题,您无法可靠地将Unicode字符串从Python打印到Windows控制台。尝试写入文件或直接使用WriteConsoleW函数(通过​​)代替。

+0

它没有帮助,我试图写入文件。在文件中,我得到相同的问号。 – Pol 2010-07-08 16:24:35

+0

也许你知道什么类型的编码发送给我mssql服务器响应? – Pol 2010-07-08 16:26:05

+0

不,如果在尝试使用文字字符串时已经有错误,那么它并不重要。 – Philipp 2010-07-08 16:33:36