Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用openpyxl保存xlsx并获得正确的编码?[垃圾字符]_Python_Excel_Encoding_Sqlalchemy_Openpyxl - Fatal编程技术网

Python 如何使用openpyxl保存xlsx并获得正确的编码?[垃圾字符]

Python 如何使用openpyxl保存xlsx并获得正确的编码?[垃圾字符],python,excel,encoding,sqlalchemy,openpyxl,Python,Excel,Encoding,Sqlalchemy,Openpyxl,我从MYSQL数据库获取结果,并使用openpyxl库将数据保存到XLSX。在保存和打开文件后,我会使用所有包含坏字符的特殊字符的名称。我相信这是一些编码问题,但在打开或保存工作簿时,我找不到设置编码的方法 我已经尝试使用: wb =Workbook(encoding='utf8') 但后来我得到了一个关于意外关键字参数的错误,我不知道我还能尝试什么 处理将查询结果数据写入excel的代码部分如下: wb = Workbook() ws = wb.create_sheet(0) ws.ap

我从MYSQL数据库获取结果,并使用openpyxl库将数据保存到XLSX。在保存和打开文件后,我会使用所有包含坏字符的特殊字符的名称。我相信这是一些编码问题,但在打开或保存工作簿时,我找不到设置编码的方法

我已经尝试使用:

wb =Workbook(encoding='utf8')


但后来我得到了一个关于意外关键字参数的错误,我不知道我还能尝试什么

处理将查询结果数据写入excel的代码部分如下:

wb = Workbook()
ws = wb.create_sheet(0)
ws.append(res.keys())
x = res.fetchall()
xlength = len(x)
ylength = len(x[0])
for i in range(xlength):
    for k in range(ylength):
        ws.cell(row=(i+2), column=(k+1)).value = x[i][k]    
wb.save('Documents/python pigu_lt/reports/cache/{}'.format(query_type) + ".xlsx")
我的实际结果是:

'Vaikams ir kūdikiams'
'Vaikams ir kūdikiams'
我的预期结果是:

'Vaikams ir kūdikiams'
'Vaikams ir kūdikiams'

有人知道如何做到这一点吗?

这与openpyxl无关,与MySQL以及如何连接MySQL有关。XLSX将数据存储在默认为UTF8的XML中,因此能够表示所有unicode字符。您应该检查数据库的设置,确保它返回unicode或utf8。

我同意
Å«
是字节0xc5 0xab的iso-8859-1解码,这是UTF-8编码的方式。因此,数据库连接可能设置为iso-8859-1或类似的设置(或者更糟糕的是,数据在存储到数据库之前被破坏)。还要注意的是,MySQL的“utf8”实际上不是utf8(它只处理基本的多语言窗格,您需要utf8mb4)。是的,在数据到达openpyxl之前,可能会发生一些utf8->latin-1的废话。大概驱动程序默认为Latin1。我们多久看到一次?直到今天,我才得到一个生成的PDF,里面有utf8-latin1乱七八糟的东西。