2011-02-18 73 views
1

我正在菲律賓開展一個項目,很多人的名字中都有特殊的拉丁字符。西班牙字符沒有正確編碼

我有一個數據庫與latin1_swedish_ci整理拉丁文中的所有表設置。

+--------------------------+--------------------------------+ 
| Variable_name   | Value       | 
+--------------------------+--------------------------------+ 
| character_set_client  | latin1       | 
| character_set_connection | latin1       | 
| character_set_database | latin1       | 
| character_set_filesystem | binary       | 
| character_set_results | latin1       | 
| character_set_server  | latin1       | 
| character_set_system  | utf8       | 
| character_sets_dir  | C:\xampp\mysql\share\charsets\ | 
+--------------------------+--------------------------------+ 

我的網頁標題聲明iso-8859-1作爲字符集。

例如,當我通過我的網絡表單提交包含代字符字符的員工姓名時,它會在我的表格中顯示爲'Marie Ca?on',並且在查看員工記錄時顯示在我的網頁上。

如果我將網頁編碼更改爲utf-8,它會正確顯示爲'MarieCañon'。所以,我假設我在我的latin1表中編碼UTF-8。但我很困惑那裏可能發生。

據我所知,PDO不處理編碼。我的網頁被宣佈爲iso-8859-1,所以我認定PHP不會導致問題。我的character_set_connection在MySQL中是latin1。

這可能發生在哪裏?

附加信息: 的Ubuntu 10.04.2 LTS 的MySQL 5.1.41-3ubuntu12.9日誌 PHP5:5.3.2 的Apache2:2.2.14

+0

理想情況下,您將所有內容編碼爲UTF-8。使用Latin1會要求麻煩。 – tadman 2016-03-21 22:32:27

回答

6
  1. 切換你的MySQL爲UTF-8。
  2. 安裝mbstring PHP擴展並進行配置。
  3. 讓你的PHP頭:header('Content-type: text/html; charset=UTF-8');
  4. HTMLheaders <meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
  5. 檢查這個cheat sheet
+0

Costis,感謝您的回覆!我會考慮很快將我的數據庫轉換爲UTF-8。目前,我希望能使ISO-8859-1工作。據我所見,我應該可以讓我的iso-8859-1頁面發送特殊的西班牙字符到latin1編碼表。再次感謝! – epitome 2011-02-18 04:48:56

4

這個工作對我來說:

$標題= mb_convert_encoding($文章[ '標題'], 「UTF-8」, 「ISO-8859-1」);

西班牙語口音