Я настроил Kannel для отправки сообщений моему сервлету. URL-адрес выглядит следующим образом:
http://10.10.10.10/income/Submit?from=%p&to=%P&content=%a&encoding=%C
Проблема в том, что encoding
равно UTF-8
для сообщений на английском языке и UTF-16BE
для сообщений на персидском языке. Мой сервлет выглядит так:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
String to = request.getParameter("to");
String from = request.getParameter("from");
String content = request.getParameter("content");
/* process message here */
}
С этим кодом я не могу получить персидские сообщения. (Они конвертируются в ASCII
). Когда я конвертирую request.setCharacterEncoding("UTF-8");
в request.setCharacterEncoding("UTF-16BE");
, я получаю null
для всех переменных. Может ли кто-нибудь помочь мне, как преобразовать to
, from
, content
на основе поля encoding
? Я использую Glassfish 3.1.2.2 в качестве контейнера.
UTF-8
существует в ТРЕХ местах! Убедитесь, что все они есть. Вот хорошее объяснение: stackoverflow.com/a/10971742/2542027 - person Multithreader   schedule 05.08.2013request.setCharacterEncoding()
совершенно не влияет на строки запроса GET. Это влияет только на тело запроса POST. Насколько мне известно, JBoss AS ›=7 — единственный сервер, который позволяет настроить через егоstandalone.xml
использование той же кодировки тела запроса POST для декодирования строки запроса GET. Но на всех остальных вы должны явно настроить его отдельно. Поэтому ваш вопрос, в котором вы подразумеваете, что изменение кодировки тела запроса POST влияет на декодирование строки запроса GET, несколько подозрительный. Вы действительно сделали правильные наблюдения? - person BalusC   schedule 05.08.2013