我下載了一套源碼,採用GB2312的頁面編碼。
其中調用了ckeditor及後台管理對中文的處理均採用是htmlspecialchars($value)來過濾掉HTML危險字元。
問題是不知道怎麼的,經過是htmlspecialchars($value)處理中文後均為空白?
後來看了資料說要這樣調用:
htmlspecialchars($value, ENT_NOQUOTES, "gb2312")
問題是:我要都這麼改,不是要改好多,再說了,像ckeditor開發人員難道不知道這問題的存在嗎?
急求簡單一點的解決辦法,最好不要改源碼,有個全域設定或環境設定之類的,請大家幫忙一下,謝!
回複討論(解決方案)
php.ini中有個編碼設定,default_charset="gb2312" 試試行不
經測試,沒有發現你說的問題
況且 htmlspecialchars 是將特殊字元轉換為HTML實體,而非你所說過濾掉HTML危險字元
本函數將特殊字元轉成 HTML 的字串格式 ( &....; )
這跟中文沒關係啊,除非你傳遞進去的時候就是亂碼之類的 .還是先檢查你傳遞進去的內容吧
我的機器是XP +easyphp5.4.0RC4
運行
中文字元啦....";echo "原樣輸出為.$str
";echo "處理後:" . htmlspecialchars($str);?>
返回真是空值。
沒有作任何其它的處理。
easyphp5.4.0RC4
其中的php是5.4版笨的嗎?
還沒有那麼奢侈,我還在用php5.3.6
如果真是 php5.4,請向php bug 網站通報錯誤
測試發現是正確的,傳回值不是空值
我的機器是XP +easyphp5.4.0RC4
運行
HTML code
$str = "111中文字元啦....";
echo "原樣輸出為.$str
";
echo "處理後:" . htmlspecialchars($str);
?>
返回真是空值。
沒有作任何其它的處理。
我看了Integration Environment是這樣的:
PHP 5.4.0RC4 VC9 Apache 2.2.21 VC9 MySQL 5.5.19 PhpMyAdmin 3.4.9 Xdebug 2.1.2
是版本的問題。 PHP 5.4.0RC4 VC9應該還是測試版。還存在很多bug.. .
樓主換個EasyPHP 5.3/EasyPHP 5.2估計就行了。
嗯。我換了5.3。果然行了。謝謝大家。
你舊框框看看可
php5.4同樣遇到這個問題:
$content = htmlspecialchars($_POST['content']);
添加
,ENT_COMPAT ,'GB2312'
之後解決了,還沒找到什麼更便捷的方法,
$content = htmlspecialchars($_POST['content'],ENT_COMPAT ,'GB2312');
php5.5 問題依舊 必須補全參數
php5.5 問題依舊 必須補全參數 是的,php5.5,我也遇到類似問題,在測試用dircms,後台一看,標題全為空白,在代碼尋找,發現是這 htmlspecialchars 函數的問題,怎麼辦?