アプリ エンジンが文字エンコーディングをどのように処理するかについての説明を探しています。サーバーがアプリエンジン上にあるクライアントサーバーアプリケーションに取り組んでいます。
これはゼロから構築された新しいアプリケーションであるため、どこでも UTF-8 を使用しています。クライアントは、POST、x-www-form-urlencoded を介していくつかの文字列をサーバーに送信します。私はそれらを受け取り、エコーバックします。クライアントがそれを取り戻すと、それは ISO-8859-1 です! また、パラメーターが UTF-8 でエンコードされた multipart/form-data として送信され、ブロブストアに POST するときにもこの動作が見られます。
記録のために、私はこれを Wireshark で見ています。したがって、UTF-8 を送信して ISO-8859-1 を受信すると 100% 確信しています。また、mojibake も表示されません。ISO-8859-1 でエンコードされた文字列はまったく問題ありません。これは、Content-Type の誤解の問題でもありません。それはクライアントではありません。途中で、私が UTF-8 パラメータを送信していることを正しく認識していますが、何らかの理由で ISO-8859-1 に変換しています。
私は、ISO-8859-1 が GAE サーブレットのデフォルトの文字エンコーディングであると信じています。私の質問は、GAE に ISO-8859-1 に変換せず、代わりにどこでも UTF-8 を使用するように指示する方法はありますか?
サーブレットが次のようなことをするとしましょう:
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("application/json");
String name = req.getParameter("name");
String json = "{\"name\":\"" + name + "\"}";
resp.getOutputStream().print(json);
}
レスポンスとリクエストの文字コードを「UTF-8」にしてみましたが、変わりませんでした。
前もって感謝します、