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
実行してください
<?php $str = "111<b>中文字符啦....</b>"; echo "原样输出为.$str <br>"; echo "处理后:" . htmlspecialchars($str);?>
easyphp5.4.0RC4
php バージョン 5.4 はバカですか?
まだそれほど贅沢ではありません、私はまだ php5.3.6 を使用しています
本当に php5.4 である場合は、php バグ Web サイトにエラーを報告してください
テストの結果、それは正しく、戻り値は正しくないことがわかりました空です
私のマシンは XP + easyphp5 .4.0RC4 です
HTML コードを実行します
$str = "111中国語文字....";
echo "元の出力is .$str
";
echo "処理後: " . htmlspecialchars($str);
?>
真の null 値を返します。
その他の処理は行われませんでした。
rreee
作者はEasyPHP 5.3/EasyPHP 5.2に変更するだけかもしれません。
古いフレームを確認できますか?
php5.4 でもこの問題が発生しました:
PHP 5.4.0RC4 VC9 Apache 2.2.21 VC9 MySQL 5.5.19 PhpMyAdmin 3.4.9 Xdebug 2.1.2
$content = htmlspecialchars($_POST['content']);
,ENT_COMPAT ,'GB2312'
php5.5 でも同様の問題が発生しました。背景を見ると、タイトルがすべて空でした。コードを検索すると、htmlspecialchars 関数に問題があることがわかりました。どうすればよいでしょうか。