carcon999のブログ

12年間Y!ブログの記載を移行しました。電子工作関連の記事が多いです。

Google App Engineでの文字化けで悩む

おさんぽガイガーGの
なんとか、Google App Engineを利用してデータを共有できるようになりました。
UIの変更やら、データ構造の見直しやら結構かかりました。

最後に困ったのが、文字化けです。Webの知識が少ないので、原因の絞込みに苦戦しました。
結論としては、UTF-8の指定がいろんなところで足りなかったようです。

■アンドロイド端末側の共有データをアップロードする際に、MultipartEntity を利用しているのですが、その定義にUTF-8の指定が必要。

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE, null, Charset.forName("UTF-8" ) ) ;


■データを受信するサーブレット側にも設定が必要で、AppEngineの設定に下記が必要
appengine-web.xml
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
<property name="file.encoding" value="UTF-8"/>
<property name="DEFAULT_ENCODING" value="UTF-8"/>
</system-properties>

■さらに、サーブレットで受信文字を解析する部分で、ストリームから文字を変換するところに下記が必要

Streams.asString(in) → Streams.asString(in, "UTF-8" )
※これが大本命だと思います。

これらを指定したところで、文字化け解消です。やっとテストが行えます。(あと少しです。)

イメージ 1