2010-04-20 62 views
1

问题是,GET query string受content ='text/html; charset = gb2312'html元标记属性?

在常规的HTTP请求到服务器(非Ajax),是查询字符串由GET方法传递到某些服务器,会受到影响由该指定的编码:

<meta http-equiv='Content-Type' content='text/html; charset=gb2312'> 

如果答案为否,如何为GET方法的参数定义编码模式?

例如: 如果我有一个html,看起来:

<html> 
<head> 
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'> 
</head> 
<body> 
<form method="GET" action="/some/server"> 
    <input type="text" name="name1" value="someNon-ASCII_value1" /> 
    <input type="submit" /> 
</form> 
</body> 
<html> 

当用户单击该按钮submit,会是怎样的价值someNon-ASCII_value1的编码?

+0

何时指定了编码? GET字符串在哪里指定? – 2010-04-20 16:46:31

回答

3

浏览器将使用与指示用于使用表单显示页面相同的编码。这确实可以是HTML头中meta content-type条目中指定的编码,但是这可以被HTTP响应中的content-type头覆盖。

但是,您还需要考虑服务器端的正确URL编码以解码GET参数。目前还不清楚您使用的是哪个服务器,但是在例如Tomcat的情况下,您需要将<Connector>元素的URIEncoding属性设置为相同的编码。

<Connector ... URIEncoding="gb2312"> 

另见this article更多的背景信息。

+0

谢谢。我确保通过运行简单的Servlet示例,在meta标签的'content'属性中编码是用于对get请求的查询字符串进行编码的。 – 2010-04-20 23:12:40

+0

不客气。 – BalusC 2010-04-20 23:31:03

+0

对不起,但有没有办法让JAVA服务器知道客户端的字符编码? (即通过一些请求头??) – 2010-04-20 23:36:05