我目前正在使用 glassfish 4 / Java EE 7 开发Web应用程序。我遇到了编码问题:Glassfish默认为 ISO-8859-15 ,我需要 UTF-8 。有时我有一些奇怪的字符,但网络应用程序工作正常没有问题。
所以,我添加了一行而不是我的 glassfish-web.xml 文件
<parameter-encoding default-charset="UTF-8"/>
然后我更改了我的JSP文件<%@page contentType="text/html" pageEncoding="UTF-8"%>
代替
<%@page contentType="text/html" pageEncoding="ISO-8859-15"%>
现在我不再拥有那些奇怪的角色,但从那时起,当内容类型为 multipart / form-data
时,我遇到POST请求问题我收到错误500,当我查看glassfish日志时,我看到了这个异常:
java.io.IOException:损坏的表单数据:无前导边界:------ WebKitFormBoundaryCgZXcxucgAjYv0sU!= ------ WebKitFormBoundaryCgZXcxucgAjYv0sU; charset = UTF-8
所以我打印了请求标题,然后我看到了:
标题[content-type]:multipart / form-data;边界= ---- WebKitFormBoundaryCgZXcxucgAjYv0sU;字符集= UTF-8
看起来它在内容类型标题的末尾添加了charset(为什么不呢?)但它似乎寻找错误的边界
WebKitFormBoundaryCgZXcxucgAjYv0sU;的字符集= UTF-8
显然,我试图从glassfih-web.xml文件中删除UTF-8行,但它没有帮助。
有谁知道为什么边界中有字符集和/或如何摆脱它或如何处理它?</ p>
非常感谢。