我的Java Web应用程序有问题。
这是index.jsp中的代码:
/p>
"http://www.w3.org/TR/html4/loose.dtd">
response.setCharacterEncoding("UTF-8");
%>
JSP PageHello World!
Res:
当我有线请求时,我的浏览器发送以下标头:
GET /kjd/index.jsp?q=%C3%A9 HTTP/1.1\r\n
...
Accept-Charset: UTF-8,*\r\n
Tomcat服务器返回以下信息:
Content-Type: text/html;charset=UTF-8\r\n
但是,如果我以我的形式发送“é”(UTF-8中的%C3%A9),则会显示“é”。
我了解的是浏览器发送了一个用UTF-8(%C3%A9)编码的“é”。
但是服务器将其解释为ISO-8859-1。因此,%C3解码为Ã,%A9解码为©,然后发送回以UTF-8编码的响应。
在代码中,应使用UTF-8解码请求:
request.setCharacterEncoding("UTF-8");
但是,如果我发送此网址:
http://localhost:8080/kjd/index.jsp?q=%E9
ISO-8859-1将“%E9”解码,并显示“é”。
为什么这不起作用?为什么用ISO-8859-1解码请求?
我已经在Tomcat 6和7以及Windows和Ubuntu上尝试过。