J'ai une page HTML qui ressemble à:Puis-je envoyer un formulaire POST dans un encodage autre que celui de son corps?
<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>
Comme vous pouvez le voir, le contenu de cette page est UTF-8, mais je dois l'envoyer avec un caractère GB2312 encodage, comme le servlet que je suis envoyer cette page à attend de moi GB2312.
Est-ce un scénario valide? Parce que dans le servlet, je ne pouvais pas récupérer ces caractères chinois en utilisant un filtre qui définit le codage de caractères à GB2312!
J'ai créé un échantillon 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);
}
}
La sortie est: 楹��
Merci trop, j'ai commenté cette conclusion sur mon blog: http://m-hewedy.blogspot.com/2010/05/beware-your-text-editor-encodes-your.html –
De rien. Mon surnom est d'ailleurs ** BalusC **, pas * BlueC *;) – BalusC
Oh, vous pouvez trouver [cet article] (http://balusc.blogspot.com/2009/05/unicode-how-to-get -characters-right.html) utile pour mieux comprendre le monde des caractères et des octets. – BalusC