我有一个HTML页面,看起来像:我可以发送POST表单而不是其正文的编码吗?
<HTML>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
<BODY onload='document.forms[0].submit();'>
<form name="form" method="post" action="/path/to/some/servlet">
<input type="hidden" name="username" value="麗安"> <!-- UTF-8 characters -->
</form>
</BODY>
</HTML>
正如你所看到的,这个页面的内容是UTF-8,但我需要用GB2312字符编码发送,因为我是在servlet发送此页面期望从我GB2312。
这是一个有效的场景吗?因为在servlet中,我无法使用将字符编码设置为GB2312的过滤器来取回这些中文字符!
我创建了一个样本servlet:
package org.daz;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EncodingServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String ENCODING = "GB2312";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
setCharacterEncoding(request, response);
String username = request.getParameter("username");
System.out.println(username);
}
private void setCharacterEncoding(HttpServletRequest request, HttpServletResponse response)throws IOException{
request.setCharacterEncoding(ENCODING);
response.setCharacterEncoding(ENCODING);
}
}
输出为:楹��
非常感谢,我在我的博客上评论了这个结论:http://m-hewedy.blogspot.com/2010/05/beware-your-text-editor-encodes-your.html – 2010-05-06 01:50:04
不客气。我的昵称是顺便** BalusC **,而不是* BlueC *;) – BalusC 2010-05-06 01:58:18
哦,你可能会发现[这篇文章](http://balusc.blogspot.com/2009/05/unicode-how-to-get -characters-right.html),以便在字符和字节的世界中获得更多的洞察力。 – BalusC 2010-05-06 02:09:05