相关疑难解决方法(0)

如果页面已经是UTF-8,那么将accept-charset ="UTF-8"添加到HTML表单有什么好处吗?

对于已经指定的页面(通过HTTP标头或元标记),要使用带有UTF-8字符集的Content-Type ...是否有添加accept-charset="UTF-8"到HTML表单的好处?

(我理解的accept-charset属性在IE打破了ISO-8859-1,但我还没有听说过有IE和UTF-8的问题.我只是问,如果有一个好处与UTF-8将它添加到有助于防止输入无效的字节序列.)

html forms encoding utf-8 character-encoding

54
推荐指数
1
解决办法
3万
查看次数

如何在Tomcat中设置请求编码?

我的Java webapp中存在问题.

这是index.jsp中的代码:

<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<% request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>

        <form action="index.jsp" method="get">
            <input type="text" name="q"/>
        </form>

        Res: <%= request.getParameter("q") %>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我发送请求时,我的浏览器发送此标头:

GET /kjd/index.jsp?q=%C3%A9 HTTP/1.1\r\n
...
Accept-Charset: UTF-8,*\r\n
Run Code Online (Sandbox Code Playgroud)

Tomcat服务器将此返回给我:

Content-Type: text/html;charset=UTF-8\r\n
Run Code Online (Sandbox Code Playgroud)

但是如果我在表单中发送"é"(在UTF-8中为%C3%A9),则会显示"é".

我的理解是浏览器发送一个用UTF-8(%C3%A9)编码的"é".

但是服务器将其解释为ISO-8859-1.所以%C3被解码为Ã而%A9被解码为©,然后发回以UTF-8编码的响应.

在代码中,请求应使用UTF-8解码:

request.setCharacterEncoding("UTF-8");
Run Code Online (Sandbox Code Playgroud)

但是,如果我发送此网址:

http://localhost:8080/kjd/index.jsp?q=%E9
Run Code Online (Sandbox Code Playgroud)

"%E9"用ISO-8859-1表示,显示"é".

为什么这不起作用?为什么请求使用ISO-8859-1进行解码?

我在Tomcat 6和7以及Windows和Ubuntu上尝试过它.

java jsp tomcat servlets character-encoding

21
推荐指数
2
解决办法
5万
查看次数

标签 统计

character-encoding ×2

encoding ×1

forms ×1

html ×1

java ×1

jsp ×1

servlets ×1

tomcat ×1

utf-8 ×1