我的框架,每個頁面做後續:我是否需要設置ini_set('default_charset','UTF-8');?
ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.func_overload',7);
header('Content-Type: text/html; charset=UTF-8');
我需要做一個ini_set('default_charset', 'UTF-8');
嗎?
我的框架,每個頁面做後續:我是否需要設置ini_set('default_charset','UTF-8');?
ini_set('mbstring.internal_encoding','UTF-8');
ini_set('mbstring.func_overload',7);
header('Content-Type: text/html; charset=UTF-8');
我需要做一個ini_set('default_charset', 'UTF-8');
嗎?
不,你不需要。
header('Content-Type: text/html; charset=UTF-8');
設置此爲每個頁面已經
這並不能掩蓋一切。正如@itpastorn和kzqai指出的那樣,有些函數具有htmlentities(和其他),它們會查看default_charset。 –
DEFAULT_CHARSET INI設置應該爲你工作。 PHP始終使用此設置在內容類型:標頭中默認輸出字符編碼
當涉及到http頭時,其他答案可以解釋。
但是:有一些功能是默認字符集意識到
從FILTER_SANITIZE_FULL_SPECIAL_CHARS說明:
像用htmlspecialchars,該過濾器是意識到DEFAULT_CHARSET的,如果檢測的 字節序列在當前的 字符集中構成無效字符,則整個字符串將被拒絕,從而導致產生0長度的字符串 。
與http://php.net/htmlentities相同,當然http://php.net/htmlspecialchars – Kzqai
請參閱https://bugs.php.net/bug.php?id=29983我看來像一些發行版仍然有問題
測試用例
echo "ini_get('default_charset') ". ini_get('default_charset')."<br>";
if (!ini_set('default_charset', 'utf-8')) {
echo "could not set default_charset to utf-8<br>";
}
這是......非常令人擔憂。我用php 5.5運行ubuntu 14.04,但這仍然發生... – Kzqai
http://php.net/default_charset – hakre