hello-world
webエンジニアのメモ。とりあえずやってみる。

nginxで静的jsonファイル配信時に日本語が文字化けしないようにする

公開日時

androidアプリ開発時に、volleyを使ってjson形式のapiを取得する処理を書いていたのですが、jsonに日本語が入っていると文字化けする現象に遭遇しました。

調べてみるとapiのレスポンスヘッダーにContent-Typeが正しく指定されていない模様。

自前で用意したapiだったのでnginxの設定を変えて、正しくContent-Typeを指定するように修正したところ、文字化けが直りました。

  • /etc/nginx/mime.types にjsonを追加
# sudo vi /etc/nginx/mime.types

types {
    text/html                             html htm shtml;
    # ・・・・
    application/json                      json;
}
  • jsonの文字コードがutf-8になるように指定
server {
    listen      80;
        # ・・・・

    include /etc/nginx/mime.types;
    charset UTF-8;
    charset_types text/css application/json text/plain;

    location /api.json {
        default_type "application/json";
        break;
    }
}
  • nginx設定再読み込み
sudo /etc/init.d/nginx configtest
sudo /etc/init.d/nginx reload
  • curlで確認
curl -I "http://localhost/api.json" 
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8

これでvolleyでも文字化けせずに受け取れます。

レスポンスヘッダーは正しく指定しましょう。自戒を込めて。

参考


Related #Android

[Android]Genymotion起動時にエラーが出た場合の対処法

新しいmacbookにAndroid環境を構築していた際に、Android Studio](http://developer.android.com/sdk/installing/studio.html) をインストールしたのですが、最初のサンプルを試した際にビルドを実行してもシミュレータが全然起動しなかったので、何かいい方法ないかなと調べていたところ、「[Genymotion + Android Studio で Android 爆速開発メモ」という記事を発見。

[Android]Genymotionのhostsを書き換える

Genymotionで起動している端末でAPIの検証をしていたのですが、hosts情報を書き換える必要があったのでやりかたを調べてみました。

[Android][Android Studio]admobを導入する

Android Studio上で開発したAndroidアプリにadmobを導入する手順のメモをまとめておきます。

[Android]WebViewでjsを有効にする

AndroidではWebViewを使用してWebページを開く際に、デフォルトだとjsが有効になっていないそうです。