Jsp中通过get方法传递参数为中文时出现乱码如何解决?

在进行web开发时,虽然在web.xml文件中加入了encodingFilter<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>*.shtml</url-pattern> </filter-mapping>

使得在添加数据时可以使用中文,但是在进行分类的更新删除操作时,由于categoryId是以get方法通过url传递的,
这个时候如果categoryId为中文的话,通过url传递到action中将会显示乱码,会出现异常,中断程序。 

解决方法

写一个工具类

public class StringDecode { public static String decode(String value)throws Exception { try { if (value == null) return null; return new String(value.getBytes("ISO-8859-1"),"utf-8"); //注: 这里的utf-8, 应视提交页面的编码而定. } catch(Exception ex) { return value; } } }

 

然后在action中调用decode方法String id = StringDecode.decode(request.getParameter("categoryId"));

 

这时得到的id就不会是乱码了。

取自" http://gforge.ce-oss.com/mwiki/index.php/Jsp%E4%B8%AD%E9%80%9A%E8%BF%87get%E6%96%B9%E6%B3%95%E4%BC%A0%E9%80%92%E5%8F%82%E6%95%B0%E4%B8%BA%E4%B8%AD%E6%96%87%E6%97%B6%E5%87%BA%E7%8E%B0%E4%B9%B1%E7%A0%81%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3%EF%BC%9F"
 
还有另外一种方法:
 
修改tomcat的server.xml文件如下:
 
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
 
这个方法比较简单,试过,没问题。
 

你可能感兴趣的:(tomcat,exception,jsp,String,web开发,action)