У меня есть HTML-страница, которая выглядит следующим образом:
<HTML>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<BODY onload='document.forms[0].submit();'>
<form name="form" method="post" action="/path/to/some/servlet">
<input type="hidden" name="username" value="麗安"> <!-- UTF-8 characters -->
</form>
</BODY>
</HTML>
Как видите, содержимое этой страницы - UTF-8, но мне нужно отправить его с кодировкой символов GB2312, так как сервлет, которому я отправляю эту страницу, ожидает от меня GB2312.
Это действительный сценарий? Потому что в сервлете я не смог получить эти китайские символы обратно, используя фильтр, который устанавливает кодировку символов в GB2312!
Я создал образец сервлета:
package org.daz;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EncodingServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String ENCODING = "GB2312";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
setCharacterEncoding(request, response);
String username = request.getParameter("username");
System.out.println(username);
}
private void setCharacterEncoding(HttpServletRequest request, HttpServletResponse response)throws IOException{
request.setCharacterEncoding(ENCODING);
response.setCharacterEncoding(ENCODING);
}
}
Вывод: 楹��