charset utf8无法使用perl代码

时间:2012-09-26 11:08:28

标签: mysql perl

我是Perl的新手,致力于遗留应用程序。我在数据库中遗漏了一些特殊字符,如ä,å,ö。以前,Mysql数据库处于latin1整理,现在改为UTF-8默认。当我查看数据库值时,这些字符不会更改(仍会获得å,ö,ä的其他字符)。我查看了perl代码,我发现这种编码和charset似乎无法正常工作。任何帮助表示赞赏。感谢。

     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');

2 个答案:

答案 0 :(得分:2)

尝试在连接数据库时使用SET NAMES 'UTF-8';

答案 1 :(得分: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;