2013-11-28 51 views
2

當試圖從Perl中將阿拉伯語插入到mysql時,阿拉伯文內容會顯示在數據庫中,如أ™إ أکآ³أکآ´أ™إ,但是當我從數據庫中檢索到值時,它將在網頁中顯示爲ÙسشÙ從perl插入阿拉伯語到mysql

請注意,我的數據庫和表字符集是utf8,而COLLATE是utf8_general_ci。

+2

首先,你需要建立什麼地方出錯了:把它在數據庫中,從數據庫中獲取它,或者將其顯示在網頁中。 – ikegami

+0

請提供'local $ Data :: Dumper :: Useqq = 1;打印(Dumper($ str));'在將其放入數據庫之前以及從數據庫中提取它之前。 – ikegami

+0

此外,如果你有phpMyAdmin,文本看起來是否正確使用它? – ikegami

回答

1

嘗試連接到MySQL後,使用SET NAMES 'UTF8'

my $dsn = "DBI:mysql:$base_name:$mysql_host_url"; 
my $dbh = DBI->connect($dsn, $user_db, $password_db) or die $DBI::errstr; 
$dbh->do(qq{SET NAMES "utf8"}); 

正如manual說:

SET NAMES表示的字符集客戶端將用來發送SQL語句 到服務器.. 。它還指定服務器應該使用 發送結果返回給客戶端的字符集。