Workaround one: javascript:window.self.location= "searchbytext.action?searchtext=" +encodeuricomponent (EncodeURIComponent ( Seartext)); Java:searchtext=java.net.urldecoder.decode (SearchText, "UTF-8"); Why do I need to encode two times because the background Java code assigns the value to SearchText , it has already used a decoding, but the decoding result is still incorrect. So we can do two encoding on the page, so that the background automatically can be offset one time, and then use Searchtext=java.net.urldecoder.decode (SearchText, "UTF-8"), a decoding is good. Workaround two: Another way is to encode JavaScript once, the background Java processing when a different idea: Java code: string s = new string (Request.getparameter ("name"). GetBytes ("Iso8859-1"), "UTF-8");
Decoding of Java background after encodeuricomponent encoding