在别的地方看到的,找了很久,给你看下吧,亲测可解决乱码问题
下面这个例子是显示表的内容,类似于SQL中的select * from [table]。其中有的字段是中文,将用于getCode来进行转码。
import sys
import pymssql
import types
#sys.setdefaultencoding(utf-8)
def str2bin(strText):
b = bytes((ord(i) for i in strText))
return b
#codec can be 'gb2312','utf8' etc
def getCode(strText,codec):
b = bytes((ord(i) for i in strText))
return b.decode(codec)
conn=pymssql.connect(host="IP\SQLEXPRESS",user="user",password="password",database="stock")
#conn=pymssql.connect(host="*",database="*",trusted=True)
cur=conn.cursor()
#cur.execute(u"SELECT * FROM dbo.t_Task".encode('gb2312')) #如果你的表名是中文
cur.execute(u"SELECT * FROM dbo.t_Task")
row = cur.fetchone()
while row:
for col in row:
if(isinstance(col,str)):
print(getCode(col,'gb2312'),end=' ')
else:
print(col,end=' ')
print()
row = cur.fetchone()
conn.close()
python2.x中字符串有decode方法,而python3.x已经取消了,因为3.x中字符类型缺少就是unicode的。所以需要将非unicode字符串转成2进制,就是函数 str2bin(strText)的作用。其他自己体会。