下一个关于俄罗斯编码、mssql 和 python 的问题
Posted
技术标签:
【中文标题】下一个关于俄罗斯编码、mssql 和 python 的问题【英文标题】:Next question about russian encoding, mssql and python 【发布时间】:2010-07-08 16:01:14 【问题描述】:。
我有这个简单的代码:
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 insted of codecs.lookup 而不是我得到任何错误,但它会打印我 ???????? ?????????
【问题讨论】:
请不要打开那么多类似的问题。在尝试获取数据库条目之前,您必须从头开始并让print u"абвгдежзийкл"
工作,这在 Windows 上似乎已经够难了。
这确实是另一个问题。当我打印你“абвгдежзийкл”时,它给了我абвгдежзийкл,但是当我从数据库中打印我的数据时,它给了我????????????????????????
在另一个线程中你说它不起作用。
我写道我解决了这个问题。现在是另一个问题!
【参考方案1】:
codecs.lookup
采用编码名称,而不是一些随机字符串,而且您可能在这里也不需要它。我认为目前由于严重的技术问题,您无法可靠地将 Unicode 字符串从 Python 打印到 Windows 控制台。尝试写入文件或直接使用WriteConsoleW
函数(通过ctypes
)。
【讨论】:
它没有帮助,我尝试写入文件。在文件中我得到相同的问号。 也许你知道什么类型的编码发送给我mssql服务器响应? 不,如果在尝试使用文字字符串时已经出现错误,那也没关系。 数据库服务器会将给定的排序规则定义的编码发送给表。不确定是否使用 pymssql,但是当使用 mysqldb 连接到 MySql 时,您可以使用数据库定义编码,将'?charset=utf8&use_unicode=1'
添加到连接字符串中。我想这对于 mssql 和 pymssql 也可能是可能的,但我不知道如何。以上是关于下一个关于俄罗斯编码、mssql 和 python 的问题的主要内容,如果未能解决你的问题,请参考以下文章
转载关于Python脚本开头两行的:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定文件编码类型