2013-08-07 68 views
0

我正在Perl中獲取數據庫表字段值(它是'utf8_unicode_ci')並試圖將該值插入到另一個表中(這也是'utf8_unicode_ci');如何處理Perl中的utf字符

但我沒有在Perl中正確獲取值。

我試圖讀取和插入的值是

我想盡了各種辦法,但他們沒有工作

任何一個可以幫助?

我曾嘗試下面的代碼:

use Encode; $message = decode_utf8($message); 

回答

2

你可能需要把它添加到連接:

my $dbh = DBI->connect(...); 
$dbh->do("SET NAMES 'utf8'"); #<-- add this after the connection was established 

隨着SET NAMES 'utf8'我們正在做的就是一句話:

SET character_set_client = 'UTF8'; 
SET character_set_results = 'UTF8'; 
SET character_set_connection = 'UTF8'; 

MySQL documentation可能會有幫助。

+0

感謝您的回覆。但是'NAMES'是什麼? – user2659554

+0

我已更新我的回答 –

+0

只有一個表字段被設置爲'utf8_unicode_ci'。 因此,如果我們這樣做,它會影響所有數據? – user2659554

1

如果在連接到數據庫時使用mysql_enable_utf8屬性,則DBD::mysql將爲您執行轉換。

my $dbh = DBI->connect("dbi:mysql:database=$db", $user, $pass", 
         { mysql_enable_utf8 => 1 }); 
相關問題