【发布时间】:2026-02-04 06:45:01
【问题描述】:
我正在使用 YahooUI Javascript 库进行简单的 ajax 调用,如下所示:
YAHOO.util.Connect.setForm('myform');
YAHOO.util.Connect.asyncRequest('POST', url, ...);
以下是我的应用程序中的设置: Tomcat版本:6.0.18
Tomcat 服务器连接器:URIEncoding="UTF-8" 网页应用页面:
在 YahooUI 连接器库文档中也有说明:
setForm 将对每个 HTML 表单进行编码 字段的名称和值使用 编码URI组件。这导致一个 UTF-8 编码的字符串,名称-值 对。注意:设置 HTTP 标头 “Content-Type”具有不同的 charset 值不会改变 序列化数据的编码。序列化数据的编码。
我可以看到作为参数发送的法语字符被编码(在 ie7 中使用 iehttpheader 工具):
name=%C3%88%C3%A0%C3%B4
testParam=%C3%B4%C3%B4
对于数据: 名称:Èàô 和 testParam: ôô
但在服务器端,我看到的值如下: ÈàÃÂ
即使我将字符串转换为字节,然后使用定义如下的字符集创建新字符串: String val = new String(oo.getBytes("UTF-8")); 我无法按预期获得准确的数据。
注意:我已经引用了以下问题,但无法解决此问题:How to get UTF-8 working in Java webapps? 请指导。
更新: 调用 W3.org 网站http://www.w3.org/International/O-URL-code.html 上给出的解码 UTF-8 函数给了我预期的结果。我希望 Tomcat 能够对此进行解码?
【问题讨论】:
标签: java utf-8 character-encoding