シャッフル主任の進捗報告

興味のあるものを作ります。進捗を不定期にご報告します。

そうだ、教祖になろう。出エジプト記 第3章3節 Lambdaでサーバサイドを実装できない

Can you speak Japanese?


さあ、それでは楽しい楽しいコーディングの時間…

のはずだったのですが、問題が発生してしましました。

API Gatewayのレスポンスが文字化けしてしまいます。
というか、日本語部分がUnicodeエンコードされています。

f:id:chief-shuffle:20191207150016j:plain

しかし、Cloud9のAPI Gateway(local)やAPI Gatewayのテストではエンコードされず表示されます。
これはCloud9やAPI Gatewayがうまいことデコードしてくれていそうです。
ブラウザにも同じようにデコードを指示したいものです。

f:id:chief-shuffle:20191207150316j:plain

f:id:chief-shuffle:20191207150306j:plain

API Gateway 文字コード」で調べるに、API Gatewayのレスポンスヘッダにcharset=utf-8を埋め込めば解決する気もするのですが、

dev.classmethod.jp

どうも、API Gatewayの画面仕様が変わっているらしく、もくは私の設定がおかしいらしく、マッピングテンプレートの指定項目が見当たりません。

f:id:chief-shuffle:20191209091517j:plain

無理やりソースでレスポンスヘッダに以下を指定してみましたが、状況変わらずです。

        'headers': {
            'Access-Control-Allow-Origin': '*',
            'Content-type': 'application/json; charset=UTF-8'
        },

f:id:chief-shuffle:20191209092853j:plain

Ты говоришь по-японски?


ロシア語で悩むほど困っていたのですが、原因は単純でした。

こちらのサイトに掲載されている通り、

www.sejuku.net

json.dump()関数によって日本語文字列がUnicodeエンコードされていましたので、

このように、第2引数に"ensure_ascii"を”False”を指定してやると、

f:id:chief-shuffle:20191209091954j:plain

f:id:chief-shuffle:20191209091938p:plain

Ура!!!

思わぬところで教祖のへっぽこぶりが露呈してしまいましたが、次こそはスーパープログラミングタイムをお届けしたいと思います。