我用 pymssql 来解决这个问题。我有一个编码为 gbk 的 mssql db,但 pymssql 似乎无法支持这一点。当我使用'gbk'作为字符集时,它会抛出OperationalError 20017
一些无用的消息,而当我尝试'cp936'时,它就会崩溃......
我可以使用 'UTF-8' 成功连接并可以使用 执行查询sqlstr.encode('utf-8')
,问题是它返回包含非 unicode 内容的 unicode 字符串。
例如,一个查询返回一个 unicode 字符串u'Port 26 \xb5\xe7'
,但这是错误的,它不是一个 unicode 字符串,它根本无法解码/编码,它应该是'Port 26 \xb5\xe7'
(对于 python 2.x),因此可以用 gbk 解码并得到正确的结果
所以我的任务是从 unicode 字符串中提取原始内容。好吧,我想我可以从 repr 用一些字符串截断来做到这一点,然后在上面调用 eval ,但我只是想知道还有更多的 Pythonic 方式吗?