以下很简单的代码, 用的是 python3.8.8 (Anaconda3) ,
数据库连接时,字符集用 utf8时,存储过程返回的中文列名可以正常显示, 但数据中有中文就乱码.
而字符集改用CP936时,存储过程返回的结果集中, 中文显示是正常了,但中文列名却消失了, 它不见了.
我试过用 cursor.execute(sql ) 亦是一样的结果
import pymssql
import pandas as pd
conn = pymssql.connect(server=server,user=user,password=password,database=database,charset='utf8')
#sql='exec dbo.p_check_wip_paper'
sql="select '测试代码' as [中文列名],'test' as [英文列名] "
df = pd.read_sql(sql,conn)
print(df)
把charset='utf8'改成 charset='CP936', 也不行.
补充一下说明: 因为数据库是生产数据库, 字段都已经定好是 varchar 了, 不能够全部改为 nvarchar , 所以, 在寻求看还有没有不改数据库字段类型的前提下, 可以达到字段列和字段内容都能正常显示中文
直接用 sqlserver 查看表,是什么情况?
表里的数据,是通过其他接口插入的?
直接查看当然是没有问题的. 是在生产数据库上