2010-09-08 68 views
0

我創建了一個PHP網站,只需從MySQL數據庫中加載文本,當我在瀏覽器中打開它時,阿拉伯語文本顯示爲亂碼,但隨後當我更改我的編碼時瀏覽器到UTF-8它顯示正常,我如何強制編碼爲UTF-8,以便用戶不必更改它?阿拉伯文顯示在giberish和問號

網站的菜單部分也從同一個數據庫(不同的表,他們都有相同的聯盟「utf8_unicode_ci」)加載菜單項,但它們都顯示爲問號。我怎樣才能解決這個問題?

您可以在test.bdsfilmfest.com檢查網站

預先感謝您:)

+0

清潔香港這個問題,並通過濃湯http://stackoverflow.com/questions/3667531/echo-breaking-on-cyrillic-symbol回答 – 2010-09-08 12:25:26

+1

菜單中的數據實際上是問題標記字符(U + 003F)。這可能是目標字符集沒有字符的字符集轉換的結果。你如何處理來自數據庫的數據? – Gumbo 2010-09-08 12:35:41

回答

2

您的Web服務器可能在默認情況下發送iso-8859-1 Content-Type頭。

要麼改變Web服務器的行爲 - 它應該有可能在一個.htaccess文件在您的網站的根目錄做了

AddDefaultCharset utf-8 

或從內PHP重寫報頭中的每個單獨的文件:

header("Content-Type: text/html; charset=utf-8"); 
+2

因爲沒有指定字符編碼,所以它是客戶端回退到ISO 8859-1。 – Gumbo 2010-09-08 12:29:59

+0

這固定了文本,但菜單文本仍然顯示爲問號:S非常感謝您:) – yousefcisco 2010-09-08 12:32:39

+1

@yousef是您也使用UTF-8編碼的數據庫連接?嘗試使用'SET NAMES utf8;'做任何查詢 – 2010-09-08 12:34:16

0

最簡單的方法是設置default_charset某處(可能在虛擬主機阿帕奇CONF,在php.ini,或.htaccess文件) ,所以你不必重複發送每個腳本每個&正確的標題。

0

取消註釋此:

<!--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />!-->