Я ищу некоторое объяснение того, как движок приложения имеет дело с кодировкой символов. Я работаю над клиент-серверным приложением, где сервер находится в приложении.
Это новое приложение, созданное с нуля, поэтому мы используем UTF-8 везде. Клиент отправляет некоторые строки на сервер через POST, x-www-form-urlencoded. Я получаю их и повторяю их. Когда клиент вернет его, он будет ISO-8859-1! Я также вижу это поведение, когда POSTing в blobstore, с параметрами, отправленными как UTF-8, multipart/form-data encoded.
Для записи, я вижу это в Wireshark. Поэтому я на 100% уверен, что отправляю UTF-8 и получаю ISO-8859-1. Кроме того, я не вижу 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", но это ничего не изменило.
Спасибо заранее,