0

我是 Perl 的新手,正在开发一个遗留应用程序。我的数据库中缺少一些特殊字符,例如 ä,å,ö。以前,Mysql 数据库是 latin1 排序规则,现在改为 UTF-8 默认值。当我查看数据库值时,这些字符没有改变(仍然为 å、ö、ä 获得一些其他字符)。我查看了 perl 代码,发现这种编码和字符集似乎不起作用。任何帮助表示赞赏。谢谢。

     use Encode qw/is_utf8 decode/;
     my($q) = CGI->new();
    $q->charset('utf-8');
    $q->header(-charset => 'utf-8', -expires => '-1d')

连接到数据库

my($dbh) = DBI->connect($config{'dbDriver'},$config{'dbUser'},$config{'dbPass'}) or die "Kunde inte ansluta till $config{'dataSource'}: " . $DBI::errstr;

$dbh->{'mysql_enable_utf8'} = 1;
$dbh->do('SET NAMES utf8');
4

2 回答 2

2

尝试使用SET NAMES 'UTF-8';on 连接到数据库。

于 2012-09-26T11:10:33.237 回答
2

您应该mysql_enable_utf8在连接时启用。

my($dbh) = DBI->connect($config{'dbDriver'},$config{'dbUser'},$config{'dbPass'}, {mysql_enable_utf8 => 1} ) 
    or die "Kunde inte ansluta till $config{'dataSource'}: " . $DBI::errstr;

你应该正确设置你的 IO,我更喜欢使用utf8::all它:

use utf8::all;
于 2012-09-26T11:33:13.120 回答