Pandas读取SQL Server中文乱码

症状: 读取SSMS数据库,表中含中文的内容呈现乱码。如下


image.png

原因:另一台电脑读取正常,数据库直接查询正常。使用

  1. Python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
  2. Python连接SQL是加上参数 charset=utf8
  3. 设置Python的默认编码为 utf-8
  4. 设置系统默认编码为 utf-8
    均无法解决。症结在于SSMS存储中文使用varchar,使用nvarchar则不会出现乱码问题。

解决:

  1. SQL读取转换为nvarchar
df_imp1 = pd.read_sql('select CONVERT(nvarchar(100),项目名称)项目名称,客户卡号,CONVERT(nvarchar(100),客户姓名)客户姓名 from imp_sap',con=eng)
  1. DF中解码指定
df_imp2['项目名称'] =df_imp2['项目名称'].map(lambda x:x.encode('latin1').decode('gb2312'))
df_imp2['客户姓名'] =df_imp2['客户姓名'].map(lambda x:x.encode('latin1').decode('gbk'))
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容