如何解决编码在 Linux 上工作正常,但在 Windows 上不起作用
我正在用 python 编写一个导出器,它将从我们的数据库中获取所有产品。一切都很好,直到我不得不将我的工作环境从 linux 更改为 windows。
因此,我们的产品中有波兰语字母。在 linux 上工作时,当我将带有 pandas 的数据导出到 csv 时,我不必考虑编码。所有的名称、描述等都有正确的拼写。但是当我在 Windows 机器上尝试我的代码时,情况发生了变化。经过一番挖掘,我发现问题出现在 sql 查询期间。这是一个示例代码:
import pymssql
server = "SERVER_IP"
user = "USER"
password = "PASSWORD"
database = "DATABASE"
try:
conn = pymssql.connect(server,user,password,database)
except pymssql.OperationalError as err:
print('Error!',err)
exit(1)
query = """
SELECT
tw_Id as Id,tw_Rodzaj as Rodzaj,tw_Nazwa as Nazwa,tw_Opis as Opis,tw_Symbol as sku,tw_IdGrupa as Grupa
FROM dbo.tw__Towar
WHERE (tw_Zablokowany = 0 AND [tw_IdGrupa] in (2,5))
"""
cursor = conn.cursor()
cursor.execute(query)
row = cursor.fetchone()
print(row)
conn.close()
这段代码在linux上的结果:
(3,1,'Skuter Cristal BIAŁY 60V','3 kołowy skuter elektryczny biały 60V','CRI-WHI',2)
这里我们在 Windows 上有相同的代码:
(3,'Skuter Cristal BIA£Y 60V','3 ko³owy skuter elektryczny bia³y 60V',2)
我觉得这有点奇怪,但我试着看得更远。检查了我的 ms sql 数据库,发现与
select name,collation_name
from sys.databases
我的数据库的 collation_name 是 Polish_CI_AS 所以我试过很自然
conn = pymssql.connect(server,database,charset="Polish_CI_AS")
但没有结果。
现在我有点不知道该怎么办。我想知道为什么这个问题会出现在 windows 上,而在 linux 上没有,我该如何解决这个问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。