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

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 に答える
2

SET NAMES 'UTF-8';データベースへの接続時に使用してみてください。

于 2012-09-26T11:10:33.237 に答える