SJISのJSONをechoで書き出したとき、文字化けもしくは、何も表示されなくなってしまいます。
(現在のコードは何も表示されてない)
mb_convert_encodingの第二引数のところをUTF8にすると文字化けします。
これらを正常な状態で表示させる方法はありますか?
文字コードはSJISのままにしたいです。
追記:まずはSJISではなくても大丈夫です。
UTF-8でも同じように文字化けしてしまいます。
lang
1 2こちらはUTF-8でのコードになります。 3$jsonのみ出力です 4header('Content-type: application/json; charset=utf-8'); 5 6//エラー出力強制 7ini_set( 'display_errors', 1 ); // エラーを画面に表示(1を0にすると画面上にはエラーは出ない) 8//すべてのエラー表示 9error_reporting( E_ALL ); 10 11$url = 'test.json'; 12$json = file_get_contents($url); 13$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 14$arr = json_decode($json, true); 15 16if ($arr === null) { 17 return; 18} else { 19 echo ''.$json.''; 20}
lang
1header('Content-type: application/json; charset=utf-8'); 2 3$url = 'test.json'; 4$json = file_get_contents($url); 5$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); 6$arr = json_decode($json, true); 7 8if ($arr === null) { 9 return; 10} else { 11 $json_count = count($arr['testjson']); 12 for ($i = $json_count - 2; $i < 2; $i++) { 13 echo '<p>'.$arr['testjson'][$i]['text'].'</p>'; 14 echo '<p>'.$arr['testjson'][$i]['url'].'</p>'; 15 echo ''.$json.''; 16 } 17}
lang
1{ 2 "testjson": [{ 3 "text": "ほじほじほじ", 4 "url": "hogehoge.hoge" 5 }, 6 { 7 "text": "ほじ", 8 "url": "hogehoge.hoge" 9 } 10 ] 11}