Java 我可以发送一个非正文编码的POST表单吗?

Java 我可以发送一个非正文编码的POST表单吗?,java,jsp,web-applications,encoding,servlets,Java,Jsp,Web Applications,Encoding,Servlets,我有一个HTML页面,看起来像: <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" n

我有一个HTML页面,看起来像:

<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>

输出为:
楹��

您可以尝试这样做

<form name="form" method="post" action="/path/to/some/servlet" charset="gb2312" accept-encoding="gb2312">
<input type="hidden" name="username" value="麗安"> <!-- UTF-8 characters -->
</form>


它可能在某些浏览器上工作。但是,浏览器不需要支持GB2312,因此您的里程数可能会有所不同。

这是不可能的。您需要从头开始使用GB2312字符,或者将整个应用程序更改为仅使用UTF-8。这样就无法将字符编码X转换为字符编码Y。ASCII范围之外的任何字符都可能损坏


表单的
accept charset
属性(如一些人所建议的)被大多数Web浏览器忽略。也字面上表示“用户代理可以解释…”,而不是“必须”。即使这样,它也只能用于对实际用户输入进行编码,而不是像您的示例中那样对隐藏字段进行编码。它们已经用页面自己的编码(在本例中为GB2312)进行编码。换句话说,在浏览器处理页面时,这些UTF-8字符已经损坏。

我在Firefox和Chrome上都试过了,似乎不适合我!这也取决于操作系统。在中国的WindowsXP上,我在IE6上可以使用它。非常感谢,我在我的博客上评论了这个结论:不客气。顺便说一句,我的尼卡姆是巴卢斯克,不是布鲁克;)哦,你可能会发现在字符和字节的世界里获得更多的洞察力也很有用。太感谢了。如果你愿意,我已经在我的博客文章中引用了你的博客文章。谢谢
 <form accept-charset="gb2312"
 <form accept-charset="gb2312"