我是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');
答案 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;