我使用電子表格::讀取處理,以從Excel(XLS或XLSX)文件獲取數據,並使用DBI把它們放在一個MySQL數據庫。的Perl的Unicode與DBI
如果我的數據打印到控制檯,它會顯示所有特殊字符正常,但是當我將其插入到數據庫中,一些文件結束了亂碼。例如,"Möbelwerkstätte"
變爲"Möbelwerkstätte"
。
我認爲Spreadsheet::Read
「知道」哪個字符集出來的文件,因爲它每次正確打印到控制檯,無論文件編碼如何。我如何確保它以UTF-8進入數據庫?
我相信DBI(和DBD :: MySQL)默認爲Latin1。發送「USE NAMES utf8」作爲您的第一個查詢。您也可以在my.cnf中啓用它,請參閱MySQL文檔。 –
您還需要確保數據庫模式具有[正確的字符集](http://dev.mysql.com/doc/refman/5.0/en/charset-applications.html)(默認字符集是拉丁-1。) – friedo
謝謝@AndyThompson,那工作。如果你把它寫成一個問題,我會接受它。 :-) –