perl 入mysql庫 出現字符集亂碼

環境:

linux                                           en_US.UTF-8

 perl, v5.8.8

mysql-5.1.46                          表字符集:gbk_chinese_cli

 

我的perl腳本是分析一個log日誌.然後插入mysql中入庫.但是結果很讓人不爽.亂碼.

折騰了很久.弄好了.解決方式如下.

 

在perl連接mysql數據庫的時候,設置

  1. my $dbh = DBI->connect("DBI:mysql:database=statcenterdb;host=127.0.0.1""user"'passwd');  
  2. $dbh->do("SET NAMES 'gbk'"); 

 是perl在向mysql插數據的時候用gbk的字符集工作.

 

然後還需要設置perl分析日誌後得到解決的字符集

  1. $_=encode("gbk",decode("utf-8",$_));  

 perl5.6以後,內部處理的時候都是用utf-8字符集.所以perl讀入文件處理沒有問題.

但是輸出還是utf-8的.可是我需要GBK的才能入庫.

所以這裏要轉碼.

在分析日誌的while循環中,每讀一行,都進行一次轉碼.然後在行程sql語句,最後入庫.

這樣就沒有亂碼了.

 

處理思路記錄.以備以後查看.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章