0

我从数据库中检索汉字数据并通过xlwt将数据写入excel,
代码如下:

ws0.write(0,0, unicode(cell, 'big5'))

在windows下是可以的,但是我在linux下deloy的时候,excel里面的数据乱码,
能帮忙解决一下吗?

4

1 回答 1

0

如果您发布了您实际运行的代码,将会有所帮助。假设这ws0是一个Worksheet对象,正确的语法是ws0.write(row_index, column_index, unicode_text).

指的是什么cell,您是如何从哪个数据库中提取它的?

“excel中的数据乱码”是什么意思?你在 Linux 上用什么来查看 XLS 文件的内容?你实际上在屏幕上看到了什么?用其他软件能在Linux上正常显示汉字吗?

尝试在 Linux 上的 Python 交互式提示符下键入:

>>> import xlwt
>>> b = xlwt.Workbook()
>>> s = b.add_sheet('zh')
>>> big5_text = '\xa7A\xa6n\xa1I'
>>> u_text = big5_text.decode('big5')
>>> s.write(0, 0, u_text)
>>> b.save('nihao.xls')

然后尝试使用 OpenOffice Calc 打开 XLS 文件……你看到了什么?

更新

(1)“你运行的代码”必须超过1行;请出示。

(2) 请运行我给你的一小段代码,并报告结果。如果可行,我们可以专注于诸如如何从哪个数据库中获取什么数据之类的事情[请也回答这个问题]

(3) 请回答Linux下显示中文的问题。

(4) 考虑看到“???” 而不是中文(或其他)字符通常是unicode_text.encode('some_encoding', 'replace')(或具有相同意图的其他代码)具有不适当编码(例如,'ascii')的结果 - 可能前面有类似的解码代码。xlwt 确实unicode_text.encode()将您的 unicode 字符串存储在文件中;它根据编码的要求使用“latin1”或“utf_16le”,下一个参数使用“strict”,而不是“replace”。如果 Excel 向您显示“???”,则很可能在您将数据提供给 xlwt 之前数据已经出现乱码。print repr(cell)告诉你什么?

(5) 如果您使用相同的输入数据和相同的 Python 脚本运行相同版本的 xlwt 和 Python,则 Linux 的输出文件应与 Windows 的输出文件逐字节相同。xlwt 和 Python 版本的差异不太可能使文件不同。请使用二进制比较(例如,fc /b ...在 Windows“命令提示符”窗口中)比较我给您的简短脚本产生的文件。请说明您在每个环境中使用的 Python 和 xlwt 版本。

(6) 请考虑切换到xlwt 问题的常用论坛...这样您可以轻松地向我发送文件以在必要时查看,并且在发布新帖子时我会收到电子邮件,而不必投票网站每隔一段时间...

于 2010-04-25T15:13:33.417 回答