如何使 IE 以 UTF-8 格式发布 FORM 数据?

Posted

技术标签:

【中文标题】如何使 IE 以 UTF-8 格式发布 FORM 数据?【英文标题】:How to make IE post FORM data in UTF-8? 【发布时间】:2011-06-09 09:38:26 【问题描述】:

这是这个问题的延续:Java Jersey: Receive form parameter as byte array

即使包含页面使用 ISO-8859-1 字符集,我也需要以 UTF-8 格式发布表单数据。我找到了 FF 的解决方案,但不是 IE。 这是整个故事:

我使用 Jersey REST Web 服务来接收从简单的 html

发布的数据。 当页面使用 UTF-8 字符集时,发布的数据也使用 UTF-8 编码,一切正常。 但是当页面使用 ISO-8859-1 字符集时,FORM 数据也使用 ISO-8859-1 发布,并且 Jersey 在特殊字符方面存在问题(可能是因为它希望数据以 UTF-8 格式出现)。

Jersey 方法如下所示:

@Path("/someMethod")
@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public String someMethod(@FormParam("someParam") String someParam)

    ...

当然,如果我将整个页面编码更改为 UTF-8,一切正常,问题是我将表单动态添加到可能使用不同编码的现有页面(在其他作品中我无法篡改页面编码) .

我有适用于 FF 但不适用于 IE 的解决方案。如果我将 accept-charset="utf-8" 属性添加到发布数据的 FORM 中,FF 会使用 utf-8 正确编码所有发布的数据,无论是否包含页面编码,但这在 IE 中不起作用。

有什么想法吗? 谢谢!

【问题讨论】:

不能不提这是这个问题的延续:***.com/questions/6282626/… 实际上,您可能希望使用 html、跨浏览器和 IE 等标签重新标记它。在这一点上,您使用 JAX-RS/Jersey 的事实并不重要。重要的是您的服务器需要 UTF-8,但 IE 给它的是 ISO-8859-1。所以在这一点上,这是一个浏览器问题,在我看来。 谢谢,你是对的。已编辑! 我认为***.com/questions/153527/… 的答案应该适合你。 【参考方案1】:

Ruby on rails 应用程序使用这个技巧:它们在隐藏字段中添加一个 UTF-8 字符,该字符不能强制转换为 ISO Latin 1。

他们使用的字段是

<input name="utf8" type="hidden" value="&#x2713;" />

它最终在查询参数中为

search?param1=foo&param2=bar&utf8=✓

历史记录:在utf8=✓ 之前,Ruby on rails 使用了一个花哨的雪人来强制 UTF-8:http://intertwingly.net/blog/2010/07/29/Rails-and-Snowmen。

【讨论】:

以上是关于如何使 IE 以 UTF-8 格式发布 FORM 数据?的主要内容,如果未能解决你的问题,请参考以下文章

delphi 保存UTF-8格式的xml文件,在IE中有乱码。

如何以给定格式从 dijit.form.DateTextBox 获取日期?

如何以UTF-8格式将资源文件存储在struts中

C# 如何在pannel控件中加载子窗口(form)

loadrunner为何设置了UTF-8仍旧乱码

HTML 表格 - 如何使 IE 不在连字符处换行