Skip to content

dev'http_api'json rpc 2.0_text_garbled

Usagi Ito edited this page Dec 21, 2017 · 2 revisions

JSON-RPC-2.0実装で文字化けが発生した場合の対処法

文字化けの主な原因

JSON は言語規格として、一般に言うところの UTF-8N で扱います。 G4 でも JSON は UTF-8N を前提として実装しているため、他の文字コードでリクエストを行うと ASCII 互換ではない文字が化けた状態で API が実行されます。この結果、例えば GeoObject.SetProperty で日本語の地名を漢字やカタカナなどのASCII互換ではない文字列で与えた場合には文字化けが発生します。

対処法

G4 HTTP API / JSON-RPC-2.0 へ ASCII 互換ではない文字を含むリクエストを行いたい場合や、レスポンスを受け取る場合には、文字コードを UTF-8N で処理するようにします。

例えば、 Windows で curl を使う場合には、入力の文字コードをコマンドラインで UTF-8N とはできないため、

  1. file.json に JSON-RPC-2.0 のリクエストオブジェクトを UTF-8N で保存し、
  2. POST メソッドで
  3. -d @file.json 形式でファイルをリクエストボディーとして curl コマンドを叩く

と対応できます。

また、 Windows で curl を使い受け取るレスポンスが文字化けする場合には、 cmd 環境であれば chcp 65001 を実行して出力の文字コードを変更するか、あるいは標準で UTF-8N を用いる端末エミュレーターを用いるなどして対応します。

なお、 Windows 環境でも、 Internet Explorer や Chrome や Firefox などの一般的なウェブブラウザーで URL を用いて GET で API を叩けば、入力文字列も結果の表示も UTF-8N で行われるため、単一の API の試験目的では便利な場合があります。

その他、各種言語や環境で文字列を UTF-8N で扱う方法はそれぞれの言語や環境のリファレンスを参照して下さい。

Clone this wiki locally
You can’t perform that action at this time.