Does a servlet knows the encoding of the sent form that specified using http-equiv?
When I specify an encoding of a POSTed form using http-equiv like that:
<HTML>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=gb2312'/>
</head>
<BODY >
<form name="form" method="post" >
<input type="text" name="v_rcvname" value="相宜本草">
</form>
</BODY>
</HTML>
And then at the servlet I use the method, request.getCharacterEncoding() I got null !
So, Is there a way that I can tell the server that I am encoding the data in some char encoding??
This will indeed return
nullfrom most webbrowsers. But usually you can safely assume that the webbrowser has actually used the encoding as specified in the original response header, which is in this casegb2312. A common approach is to create aFilterwhich checks the request encoding and then usesServletRequest#setCharacterEncoding()to force the desired value (which you should of course use consistently throughout your webapplication).Map this
Filteron anurl-patterncovering all servlet requests, e.g./*.If you didn’t do this and let it go, then the servletcontainer will use its default encoding to parse the parameters, which is usually
ISO-8859-1, which in turn is wrong. Your input of相宜本草would end up likeÏàÒ˱¾²Ý.