Get way commits are very common in the web, and sometimes we have to submit the request using the Get method, but it is always frustrating for a container such as Tomcat to encode the get mode.
Let's talk about the process first:
Our content is sent using Get method, we will bring the content after the URL, the request sent by the browser is passed the URI code of the browser, sent to the server side, if it is struts2 will go through the interceptor URI decoding, and use "iso8859-1" to encode, Because the transfer process is binary.
There are three ways to solve the problem of Chinese coding
Assume:
Url:http://localhost:8080/test?name= Test
First, processing on the server
The content is "iso8859-1", using
String str = new String (Name.getbyte ("iso8859-1"), "Utf-8");
Get the correct value.
PS: This way there is a disadvantage, this way the server must be encoded by default using Iso8859-1, if I change the default iso8859-1 in Tomcat is Utf-8, then this method will not be effective.
Second, set in the Tomcat configuration file
In the Tomcat directory conf/server.xml, search "8080" port, if the port is changed to search by port number, after searching in this label hollow lattice input uriencoding= "UTF-8", it is iso8859-1 by default.
PS: The disadvantage of this way is obvious, change the server will be changed, sometimes forget is also very common things.
Third, manual coding more than once
Both the browser and the server are encoded and decoded, the support of Chinese is not very good, then can I convert the Chinese into English or digital transmission in advance?
Assume:
1, name= test, in the JS tag, use the encodeURI (param) method to first turn "test" into a name=%26%92 (fabricated) browser and then automatically URI encoding name=%2525%2592 (% of the URI encoded as%25);
OGNL expression, use <s:param name= "name" value= "%{@java. Net.URLEncoder.encode (name, ' Utf-8 ')}" > Uri-encode the value, Support for static methods Java.net.URLEncoder.encode () is also enabled in the Struts2 configuration file.
Struts.xml:name= "Struts.ognl.allowStaticMehtodAccess" value= "true"
2, this time the link get method submitted
3, the server to get name=%26%92, we re-use Uridecoder.decode (name, "Utf-8"); To decode so that you get the "test"
PS: This is not a better way to rely on Tomcat
Get way to submit Chinese coding problem and three ways to solve