【发布时间】:2013-10-27 09:34:47
【问题描述】:
我编写了一个 perl 脚本,它使用 CAM PDF 模块从 pdf 文件中提取 PDF 元数据。然后我使用 DBI 将这些数据插入 MySQL。我遇到了一个包含特殊字符的 PDF 文件。我可以确认 MySQL 模式和数据库表设置为 UTF8。我已将 perl 脚本设置为使用 use utf8; 的 utf8 我也将 DBI 连接设置为使用此 mysql_enable_utf8 => 1。
我现在可以保存一些符号(版权、注册),但商标符号被转换为撇号/重音符号。我读到设置$dbh->do('SET NAMES utf8') 将有助于解决这个问题,但在我的场景中,它会在第一次遇到符号后剪切所有文本。
我猜问题是来自 PDF 的文本设置为另一种编码格式,而不是 UTF8。我尝试使用use Encoding 模块对这些字符串进行解码/编码,并将符号转换为文本。当使用 php 将该文本输出到网页时,它会显示为文本而不是符号。
【问题讨论】:
-
听起来您的数据被渲染为 ISO-8859-1 或 Windows-1252 而不是 UTF-8。
-
use utf8仅声明您的脚本是用 utf-8 编码的。它不做任何其他事情。如需更多信息,请参阅perldoc页面utf8和perlunicode。
标签: mysql perl pdf character-encoding dbi