JavaScript
JSON
Ajax

HTML と JavaScript が shift_jis の場合の JSON の文字コードについて

比較

以下を変えて比較

  • JSON の読み込み方
  • サーバのレスポンスヘッダの Content-Type の文字コード
  • JSON の文字コード

XHR の場合

Content-Type   JSON  結果       
utf-8(指定なし) shift_jis JSONパースエラー
Content-Type   JSON  結果       
shift_jis shift_jis 正常
Content-Type   JSON  結果       
utf-8(指定なし) utf-8 JSONパースエラー
Content-Type   JSON  結果       
shift_jis utf-8 文字化け

Content-Type と JOSN の文字コードが shift_jis の場合に正常に動作。

Fetch API の場合

Content-Type   JSON  結果       
utf-8(指定なし) shift_jis JSONパースエラー
Content-Type   JSON  結果       
shift_jis shift_jis JSONパースエラー
Content-Type   JSON  結果       
utf-8(指定なし) utf-8 正常
Content-Type   JSON  結果       
shift_jis utf-8 正常

JOSN の文字コードが utf-8 の場合に正常に動作。

結論

Content-Type の文字コードがなんであろうと、Fetch API で読み込み JSON の文字コードを utf-8 にしておけば大丈夫そうな感じではある。