关于俄文编码、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()
我遇到了这个错误:查找错误:未知编码:????? ?????? ???????
我无法从MSSQL读取俄文的varchar字段。但是当我在同样的代码中直接打印字符串时,一切正常,能够正常显示俄文字符。
谁知道这是怎么回事?
如果我尝试直接打印h,而不是使用codecs.lookup,那么我就不会出现错误,但它会显示为???????? ?????????。
1 个回答
2
codecs.lookup
这个函数是用来查找编码名称的,而不是随便一个字符串。其实在这里你可能根本不需要用到它。我觉得目前从Python直接在Windows控制台上打印Unicode字符串是有点问题的,因为有一些比较复杂的技术原因。你可以试试把内容写入文件,或者直接使用 WriteConsoleW
函数(通过 ctypes
)来实现。