IE 8 编码问题
我们有一个wep应用程序,当在GET查询字符串中使用中文单词时无法得到正确的结果 服务器端的参数,但在 POST 数据中我们可以在服务器端获取正确的参数。 服务器是Tomcat。在服务器端我们使用GBK编码来获取HTTP参数 如果我将查询字符串中的参数编码从 ISO8859-1 转换为 GBK,这是正确的,但问题是有太多 JSP 页面需要更改。所以我想是否有办法配置 IE 以使用 GBK 发送查询字符串,但 iso8859- 1. 我试图取消选中 IE 的“发送 UTF-8 url”选项,但它对我不起作用...
请帮助我,对不起我的英语不好!
//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中使用汉字?
we have a wep application, when using chinese words in GET query string can not get correct
parameter on server side but in POST data we can get correct parameter on server side.
server is Tomcat. on server side we use GBK encoding to get HTTP parameters
if I convert encoding of parameters in in query string from ISO8859-1 to GBK it's right but the problem is there are too many JSP pages to change.so I wanna if there is anyway to configure IE to send query string using GBK but iso8859-1.
I tried to uncheck "send UTF-8 url" option of IE ,it did not work for me...
PLZ HELP SORRY FOR MY BAD ENGLISH!
//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 is used to set encoding converting, default is 1 which means dont change .
FlowNo is supposed to be some Chinese words, if FlowNo is passed to server in url(HTTP GET query string)with default iPostChange I cant get right Chinese string, but if FlowNo is passed to server in a Form(using POST method)I can get right Chinese string.
is that IE8 did not support using Chinese characters in URL ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
固定的。
请参阅: Tomcat wiki
Tomcat 将使用 ISO-8859-1 作为默认字符编码整个 URL,包括查询字符串(“GET 参数”)。有两种方法可以指定如何解释 GET 参数:
设置 URIEncoding 属性
元素在
server.xml 到特定的东西
(例如 URIEncoding="UTF-8")。
设置 useBodyEncodingForURI
元素上的属性
在 server.xml 中设置为 true。这将
使连接器使用
GET 请求正文的编码
参数。
fixed.
see : Tomcat wiki
Tomcat will use ISO-8859-1 as the default character encoding of the entire URL, including the query string ("GET parameters"). There are two ways to specify how GET parameters are interpreted:
Set the URIEncoding attribute on the
element in
server.xml to something specific
(e.g. URIEncoding="UTF-8").
Set the useBodyEncodingForURI
attribute on the element
in server.xml to true. This will
cause the Connector to use the
request body's encoding for GET
parameters.
最好不要依赖 GET 请求中的字符编码,因为某些浏览器会将它们编码为 UTF-8,而另一些浏览器会将它们编码为 ISO-8859-1。此外,强制执行的编码取决于提交表单的页面的编码 - 因此,虽然以 UTF-8 编码的页面上的一个表单将导致 UTF-8 编码的 GET 请求,但在使用 UTF-8 编码的页面上的类似表单将导致 UTF-8 编码的 GET 请求。 ISO-8859-1 编码将导致 ISO-8859-1 编码请求。
另请参阅 HTTP get 请求的正确编码是什么字符串? 以获得更详细的解释。
It's best not to rely on the character encoding in GET requests, as some browsers will encode them in UTF-8 and others will encode them as ISO-8859-1. Furthermore, the encoding that is enforced depends on the encoding of the page that submitted the form - so, while one form on a page encoded in UTF-8 will lead to an UTF-8 encoded GET request, a similar form on a page with ISO-8859-1 encoding will lead to an ISO-8859-1 encoded request.
See also What's the correct encoding of HTTP get request strings? for a more detailed explanation.