當我在表單中包含文件輸入時,表單元素的輸入編碼出現了問題。我正在使用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