IE 8编码问题

时间:2010-07-21 11:26:39

标签: encoding internet-explorer-8

我们有一个wep应用程序,当在GET查询字符串中使用中文单词时无法得到正确的结果 服务器端的参数但在POST数据中我们可以在服务器端获得正确的参数。 服务器是Tomcat。在服务器端,我们使用GBK编码来获取HTTP参数 如果我将查询字符串中的参数编码从ISO8859-1转换为GBK它是正确的,但问题是有太多的JSP页面需要更改。所以我想如果有任何方式配置IE使用GBK发送查询字符串但iso8859- 1。 我试图取消选中IE的“发送UTF-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在Form中传递给服务器(使用POST方法)我可以得到正确的中文字符串。

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

2 个答案:

答案 0 :(得分:1)

固定。

请参阅:Tomcat wiki

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

  1. 设置URIEncoding属性  元素     server.xml到特定的东西     (例如URIEncoding =“UTF-8”)。

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

答案 1 :(得分: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?