我創建了一個PHP網站,只需從MySQL數據庫中加載文本,當我在瀏覽器中打開它時,阿拉伯語文本顯示爲亂碼,但隨後當我更改我的編碼時瀏覽器到UTF-8它顯示正常,我如何強制編碼爲UTF-8,以便用戶不必更改它?阿拉伯文顯示在giberish和問號
網站的菜單部分也從同一個數據庫(不同的表,他們都有相同的聯盟「utf8_unicode_ci」)加載菜單項,但它們都顯示爲問號。我怎樣才能解決這個問題?
您可以在test.bdsfilmfest.com檢查網站
預先感謝您:)
我創建了一個PHP網站,只需從MySQL數據庫中加載文本,當我在瀏覽器中打開它時,阿拉伯語文本顯示爲亂碼,但隨後當我更改我的編碼時瀏覽器到UTF-8它顯示正常,我如何強制編碼爲UTF-8,以便用戶不必更改它?阿拉伯文顯示在giberish和問號
網站的菜單部分也從同一個數據庫(不同的表,他們都有相同的聯盟「utf8_unicode_ci」)加載菜單項,但它們都顯示爲問號。我怎樣才能解決這個問題?
您可以在test.bdsfilmfest.com檢查網站
預先感謝您:)
您的Web服務器可能在默認情況下發送iso-8859-1
Content-Type頭。
要麼改變Web服務器的行爲 - 它應該有可能在一個.htaccess
文件在您的網站的根目錄做了
AddDefaultCharset utf-8
。
或從內PHP重寫報頭中的每個單獨的文件:
header("Content-Type: text/html; charset=utf-8");
因爲沒有指定字符編碼,所以它是客戶端回退到ISO 8859-1。 – Gumbo 2010-09-08 12:29:59
這固定了文本,但菜單文本仍然顯示爲問號:S非常感謝您:) – yousefcisco 2010-09-08 12:32:39
@yousef是您也使用UTF-8編碼的數據庫連接?嘗試使用'SET NAMES utf8;'做任何查詢 – 2010-09-08 12:34:16
最簡單的方法是設置default_charset某處(可能在虛擬主機阿帕奇CONF,在php.ini,或.htaccess文件) ,所以你不必重複發送每個腳本每個&正確的標題。
取消註釋此:
<!--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />!-->
清潔香港這個問題,並通過濃湯http://stackoverflow.com/questions/3667531/echo-breaking-on-cyrillic-symbol回答 – 2010-09-08 12:25:26
菜單中的數據實際上是問題標記字符(U + 003F)。這可能是目標字符集沒有字符的字符集轉換的結果。你如何處理來自數據庫的數據? – Gumbo 2010-09-08 12:35:41