私の PHP Web サービスでは、JSON 形式でアクセント付きの文字を含む文字列を含むいくつかの配列を返す必要があります (クライアント アプリで JS を使用して解析します)。
しかし、htmlentities
関数はアクセント付き文字を含む文字列を空の文字列に置き換えます! を使用しないhtmlentities
と、 でエラーが発生しjson_encode
ます。
$a = array('key' => 'èàìòù');
foreach ($a as $k => $v)
$a[$k] = htmlentities($v, ENT_QUOTES | ENT_HTML5, 'UTF-8');
json_encode($a);
オプションも試しましたENT_COMPAT
が、空の値しか得られません。
print_r
beforeで配列を印刷するhtmlentities
と、コンテンツは問題ないことに注意してください。
詳しくは:
すべてのファイルは BOM なしの UTF-8 形式です (Notepad++ で保存されます)。PHPとHTMLにUTF-8を設定するヘッダーを追加しようとしました。DB テーブルは utf8_unicode_ci 形式です。
バージョン: PHP 5.3.3、MySQL 5.5.30-1。
ご協力ありがとうございました!