質問: ### 前提・実現したいこと AWS lambda(Python3.6) × AWS Gatewayのレスポンスで日本語部分のみユニコードになってしまうので、utf-8など日本語で読めるようにしたい。 ### 詳細 AWS lambda(Python3.6) × AWS Gatewayを使って簡単なREST APIを作っています。 日本語の文字列を返そうとすると、ブラウザでもターミナル上でも、日本語部分のみユニコードになってしまいます。 どうしたらこの問題を解決できるでしょうか。 現状の設定としては、以下になります。 ##### AWS lambda code ``` import json # -*- coding:utf-8 -*- def lambda_handler(event): return "テスト" ``` ##### AWS GateWay メソッドレスポンスのコンテンツタイプ ⇨ application/json;charset=UTF-8 ###### レスポンス例 なお、AWS GateWayでのテストでは、 レスポンスが"テスト"と正常に出ます。下記画像の通り。 イメージ説明 ----------------------------------------------------------------------------------------------------------------- itermやブラウザでは以下の通り表示されます。 "\u30c6\u30b9\u30c8" --- 1日くらいかけて調べたのですが、 全くわからず相談させていただきました。 どうぞよろしくお願いいたします。
回答: APIGatewayはあまり使用経験がない(Lambdaはあります)のですが、とりあえず思いついたのは受け取り側(Webフロントエンドなりサーバなり)でURLデコードをかけることですかね。 Webフロント(Javascript)だったら、 ``` console.log(decodeURI("\u30c6\u30b9\u30c8")); ``` サーバ(PHP)だったら、 ``` print(urldecode("\u30c6\u30b9\u30c8")); ``` あと、 > > メソッドレスポンスのコンテンツタイプ > > ⇨ application/json;charset=UTF-8 > > > JSONを返すように設定しているので、返す値もJSON形式にした方がいいと思います。 APIGatewayでJSONを返す場合はAWSルールに則る必要があるので注意して下さい。 私の記事ですが、参考になればと思います。 ただ、Node.jsです。Pythonの場合はどうなんだろう・・・