gpt4 book ai didi

使用 DBI 处理 Perl Unicode

转载 作者:行者123 更新时间:2023-12-04 04:56:39 25 4
gpt4 key购买 nike

我正在使用 Spreadsheet::Read 从 Excel(xls 或 xlsx)文件中获取数据,并使用 DBI 将它们放入 MySQL 数据库中。

如果我将数据打印到控制台,它会正确显示所有特殊字符,但是当我将其插入数据库时​​,某些文件最终会出现损坏的字符。例如,"Möbelwerkstätte"变成 "Möbelwerkstätte" .

我认为Spreadsheet::Read “知道”哪个字符集从文件中出来,因为它每次都正确打印到控制台,而不管文件编码如何。如何确保它以 UTF-8 格式进入数据库?

最佳答案

DBI 和 DBD::MySQL 默认为 Latin1(用 Latin1 编译)。
通过发送“USE NAMES utf8”作为您的第一个查询,您将为该 session 更改它。

从手册:

SET NAMES 指示客户端将使用什么字符集向服务器发送 SQL 语句。因此,SET NAMES 'cp1251' 告诉服务器,“来自这个客户端的 future 传入消息在字符集 cp1251 中。”它还指定服务器用于将结果发送回客户端的字符集。 (例如,如果您使用 SELECT 语句,它会指示用于列值的字符集。)

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html获取完整文档。

关于使用 DBI 处理 Perl Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com