2016-03-03 44 views
1

我有運行apache 2.0的日語RHEL服務器。HTTP內容類型響應中的錯誤字符集

這是我的問題:
我想響應與Content-Type: text/html; charset=UTF-8,但目前它與Content-Type: text/html; charset=Shift_JIS

的回答,我已經試過什麼:

  • 添加AddDefaultCharset utf-8到工作.htaccess文件(無法編輯阿帕奇配置文件)
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />添加到php文件
  • 添加php_value default_charset UTF-8.htaccess文件
  • 測試非常簡單test.php

    <?php header('Content-Type: text/html; charset=UTF-8'); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <h1>Test</h1> </body> </html>

上述作品都不是。有人請幫助我。

+3

您是否嘗試過在PHP文件中發送'content-type' *標頭*? –

+0

@Pekka웃:不起作用(問題更新) – vanquang9387

回答

0

發現問題與php.ini中的mbstring設置有關。 它首先從

mbstring.language = Japanese 
mbstring.http_input = auto 
mbstring.http_output = SJIS 

更改爲

mbstring.language = Japanese 
mbstring.http_input = pass 
mbstring.http_output = pass 

但是,當檢查Álvaro González's answer這個問題的作品。

3

顧名思義,AddDefaultCharset更改默認字符集。如果有其他指令爲您的文件類型設置了不同的內容類型,則您的設置將被覆蓋。

在這種情況下,如果您自己不這樣做,PHP本身將始終設置Content-Type頭,因此無法從Apache配置它,除非您將PHP作爲Apache模塊運行並使用Apache指令。

請詢問詳細檢查default_charset PHP directive

PHP的所有版本將使用該值由PHP發送的 默認的Content-Type頭中的字符集,如果頭沒有被覆蓋 致電header()

顯然,任何你放在響應(如<meta>代碼)不會改變響應早發。

+0

謝謝@ÁlvaroGonzález。我已將'php_value default_charset UTF-8'添加到'.htaccess'文件,但沒有運氣。我將嘗試在我的php框架中查找header()調用。 – vanquang9387

+0

即使'header()'調用也不起作用(問題已更新) – vanquang9387

相關問題