我编写了一个 perl 脚本,它使用 CAM PDF 模块从 pdf 文件中提取 PDF 元数据。然后我使用 DBI 将这些数据插入 MySQL。我遇到了一个包含特殊字符的 PDF 文件。我可以确认 MySQL 模式和数据库表设置为 UTF8。我将 perl 脚本设置为使用 utf8use utf8;
我也将 DBI 连接设置为使用它mysql_enable_utf8 => 1
。
我现在可以保存一些符号(版权、注册),但商标符号被转换为撇号/重音符号。我读到该设置$dbh->do('SET NAMES utf8')
将有助于解决此问题,但在我的场景中,它会在第一次遇到符号后剪切所有文本。
我猜问题是来自 PDF 的文本设置为另一种编码格式,而不是 UTF8。我尝试使用use Encoding
模块对这些字符串进行解码/编码,并将符号转换为文本。当使用 php 将该文本输出到网页时,它显示为文本而不是符号。