2010-07-21 69 views
1

我们有一个wep应用程序,当在GET查询字符串中使用中文单词时无法得到正确的 参数在服务器端,但是在POST数据中我们可以得到服务器端的正确参数。 服务器是Tomcat。在服务器端我们使用GBK编码来获取HTTP参数 如果我将查询字符串中的参数编码从ISO8859-1转换为GBK它是正确的,但问题是有太多的JSP页面要更改。所以我想如果有反正配置IE使用GBK但iso8859-1发送查询字符串。 我试图取消选择“发送UTF-8 URL” IE选项的,它并没有为我工作...IE 8编码问题

PLZ帮助很抱歉我的英文不好!

// iPostChange INT 0:ISO8859_1,1:NOCHANGE,2:ISO8859_1-> GBK,3:GBK-> ISO8859_1,5:GBK

String sFlowNo = DataConvert.toRealString(iPostChange,(String)CurComp.getParameter("FlowNo")); 

iPostChange用于设定编码转换,默认为1这意味着不改变。 FlowNo应该是一些中文单词,如果FlowNo通过url(HTTP GET查询字符串)通过默认iPostChange传递给服务器我无法获得正确的中文字符串,但是如果FlowNo传递给服务器(使用POST方法)能得到正确的中文字符串。

是IE8不支持在URL中使用中文字符吗?

+0

对英语没有任何问题,请你提供一些你正在做的事情的实际代码。 – Anders 2010-07-21 11:30:27

+0

谢谢安德斯,我编辑了我的问题。 – idiotgenius 2010-07-21 11:44:57

回答

1

固定。

看到:Tomcat wiki

Tomcat将使用ISO-8859-1作为整个URL的默认字符编码,包括查询字符串( “GET参数”)。有两种方法来指定参数是如何GET解释:

  1. 坐落在 server.xml中 元素的属性的URIEncoding具体 东西(例如的URIEncoding = “UTF-8”)。

  2. 将server.xml中元素 上的useBodyEncodingForURI 属性设置为true。这将使 导致连接器使用 请求正文的编码GET 参数。

1

最好不要依赖于GET请求的字符编码,因为一些浏览器将在UTF-8编码,他们和其他人将其编码为ISO-8859-1。此外,强制执行的编码取决于提交表单的页面的编码 - 因此,以UTF-8编码的页面上的一个表单将导致UTF-8编码的GET请求,页面上的类似表单ISO-8859-1编码将导致ISO-8859-1编码请求。

另请参阅What's the correct encoding of HTTP get request strings?了解更多详细说明。

+0

是的!我完全同意,但我正在维护JSP页面的传统System.tons !:D – idiotgenius 2010-07-27 11:08:38