htmlspecialchars($value)導致中文丟失

來源:互聯網
上載者:User
我下載了一套源碼,採用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 函數的問題,怎麼辦?

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.