我編寫了一個使用CAM PDF模塊從PDF文件中提取PDF元數據的perl腳本。然後我使用DBI將這些數據插入到MySQL中。我跑過了一個包含特殊字符的PDF文件。我可以確認MySQL模式和數據庫表設置爲UTF8。我有Perl腳本設置爲使用utf8 use utf8;
我也有DBI連接設置爲使用此mysql_enable_utf8 => 1
。Perl將商標符號插入到Mysql中
我現在可以保存一些符號(版權,註冊),但商標符號被轉換爲撇號/口音。我讀了$dbh->do('SET NAMES utf8')
這個設置可以幫助解決這個問題,但是在我的場景中,它會在符號第一次遇到後切割所有文本。
我猜測問題是來自PDF的文本是以另一種編碼格式設置的,而不是UTF8。我試圖使用use Encoding
模塊對這些字符串進行解碼/編碼,並將符號轉換爲文本。當使用php將該文本輸出到網頁時,它將顯示爲文本而不是符號。
聽起來就像你已經將數據呈現爲ISO-8859-1或Windows-1252而不是UTF-8。 – tadman
'use utf8'只聲明你的腳本是用UTF-8編碼的。它什麼都不做。有關更多信息,請參閱'perldoc'頁面'utf8'和'perlunicode'。 –