编码在 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

我的数据库的 collat​​ion_name 是 Polish_CI_AS 所以我试过很自然

conn = pymssql.connect(server,database,charset="Polish_CI_AS")

但没有结果。

现在我有点不知道该怎么办。我想知道为什么这个问题会出现在 windows 上,而在 linux 上没有,我该如何解决这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...