当我在表单中包含文件输入时,表单元素的输入编码出现了问题。我正在使用jquery和一个servlet后端(和ajax调用),但我不知道这应该与它有什么关系。 HTML页面编码设置为UTF-8,并且我还指定了使用utf8的servlet请求的字符编码。当我从表单中删除文件输入时,编码是好的。当包含文件输入在表单中时,编码会被搞乱
当我探讨我看到萤火虫以下有效载荷的请求头:
...
------WebKitFormBoundaryMxjJWBwBmPLxN623
Content-Disposition: form-data; name="createActivityTitleInputId"
æøåæøåæøåæøå
...
输入应æøåæøåæøå的内容,我不知道webkitformboundary的东西是什么...?
如果有人能帮我解决这个问题,我将非常感激。
谢谢:)
-----编辑------
所以我做了一个小测试项目,尽量缩小问题的范围。当我不使用ajax发布表单时,一切正常。如果我使用jQuery表单插件提交表单,那么编码失败...
form.ajaxSubmit({
dataType: 'json',
data: data,
type: 'POST',
success: function(response) {
successfunction(response);
}
});
任何人都有使用此插件的经验吗?
可能是一个愚蠢的问题,但是你的''enctype'设置为? – 2011-03-12 23:31:20
没关系,我在这里看到'form-data'。 – 2011-03-12 23:33:04
你用什么来解析'multipart/form-data'请求? Apache Commons FileUpload,我猜?这边界的东西只是RFC2388的一部分,对我来说看起来很好。提交的输入明显错误地编码为ISO-8859-1而不是UTF-8。但是不清楚它是否是错误地使用它的客户端(尝试不同的浏览器),或者只是你自己将提取的UTF-8字符打印到某些错误地使用ISO-8859-1的输出中。 – BalusC 2011-03-12 23:52:58