我用Python中pymssql库连接SQL Server,然后查询表,输出内容,对应的中文为啥编乱码了
求职者编号:15011 ,求职者姓名:Ø¿¹¦ºÆ,求职者性别:ÄÐ,求职者电话:1536248201
import pymssql
connect=pymssql.connect(host='127.0.0.1:1433',user='sa',password='123456',database='Career',charset='utf8')
cursor=connect.cursor()
cursor.execute("""
SELECT *
FROM 求职者信息表
WHERE 求职者编号 LIKE '15011';
""")
row = cursor.fetchone()
while row:
print("求职者编号:%s,求职者姓名:%s,求职者性别:%s,求职者电话:%s" % (row[0],row[1],row[2],row[3]))
row = cursor.fetchone()
改了编码格式后,执行cursor.execute语句报错
(102, b"Incorrect syntax near '\xb0'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n")
目前我去找的大多方法都是改那个编码格式,GBK,GB18030等等,不过都不行,有的还报错。
可以尝试用sql语句将varchar转为nvarchar类型
示例:
select convert(nvarchar(50),table_colum) as 'nvarchar_colum' from mytable where convert(nvarchar(50),table_colum) = '魏本明'
##盲改一个
connect=pymssql.connect(host='127.0.0.1:1433',user='sa',password='123456',database='Career',charset='utf8', use_unicode=True)
sql语句中有中文的时候进行encode
insertSql = "insert into test values(1,'测试','2022/12/11')".encode("utf8")
连接的时候加入charset设置信息
pymssql.connect(host=xxx,user=yyy,password=zzz,database=testdb,charset="utf8")