微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编码在 Linux 上工作正常,但在 Windows 上不起作用

如何解决编码在 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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?