场景
- 开发机win10,记E1。
- 服务器server 2012,记E2。
一个python数据处理脚本,功能是一些数据存储操作。使用了pandas
、sqlalchemy
做数据库连接。
在E1上正常运行,结果正确。部署到E2上后也能正常运行,但是出现中文乱码。
乱码出现在,从同一个sql server中读取的中文数据里。
一开始以为是数据库连接代码缺了强制编码类型,于是尝试了?charset=utf8
等限制,没有效果。
可能是因为不同系统的一些设置不同导致的。但是这个问题我没有找到正确的设置。
记起来,sql server的varchar
与nvarchar
是有区别的,其中varchar
容易导致中文乱码的问题。
所以尝试强制转码。
解决方案
df = pd.read_sql(xxxx)
df.name = df.name.apply(lambda x: str(x).encode('latin-1').decode('gbk'))
- 这样
df.name
的中文乱码就解决了。