【发布时间】:2013-05-21 13:26:23
【问题描述】:
我正在使用 Spreadsheet::Read 从 Excel(xls 或 xlsx)文件中获取数据,并使用 DBI 将它们放入 MySQL 数据库中。
如果我将数据打印到控制台,它会正确显示所有特殊字符,但是当我将其插入数据库时,某些文件最终会出现损坏的字符。例如,"Möbelwerkstätte" 变为 "Möbelwerkstätte"。
我认为Spreadsheet::Read“知道”哪个字符集从文件中出来,因为它每次都能正确打印到控制台,而不管文件编码如何。如何确保它以 UTF-8 格式进入数据库?
【问题讨论】:
-
我相信 DBI(和 DBD::MySQL)默认为 Latin1。发送“USE NAMES utf8”作为您的第一个查询。您也可以在 my.cnf 中启用它,请参阅 MySQL 文档。
-
您还需要确保数据库架构具有 correct charset(默认字符集为 Latin-1。)
-
谢谢@AndyThompson,这行得通。如果你把它写成一个问题,我会接受它。 :-)
-
@friedo:数据库已经在 utf8 中。不过还是谢谢。