AWSでLambdaとAPI GatewayのRest APIを用いてサーバーレスでWebサイトを作ろうとしたところ、日本語のhtmlを表示しようとしたときに文字化けしてしまった。
このとき、API Gatewayの設定でLambdaのプロキシ統合は有効にしていて、Lambdaのソースコードはざっくりとは下記の通り。
def lambda_handler(event, context):
html = """\
<h1>日本語を含むhtml</h1>
<p>あいうえおかきくけこ</p>
"""
return {
"statusCode": 200,
"headers": {
"Content-Type": "text/html"
},
"body": html
}
調べてみると、プロキシ統合を有効にしない場合ではAPI Gatewayの設定で「Content-Typeをapplication/json;charset=UTF-8にする」ことにより日本語が使えるようになるらしいので、これに習い、プロキシ統合は有効のままでソースコードを下記のように修正した。
def lambda_handler(event, context):
html = """\
<h1>日本語を含むhtml</h1>
<p>あいうえおかきくけこ</p>
"""
return {
"statusCode": 200,
"headers": {
"Content-Type": "text/html; charset=UTF-8"
},
"body": html
}
text/html
の後にcharset=UTF-8
を追加した。これで再度確認したところ、無事日本語を文字化け無しで表示することができた。