日期:2014-05-16  浏览次数:20389 次

JS和JSP以及JAVA乱码解决备忘

>>>>1<<<<<

?

tomcat配置解决乱码:tomcat作为服务器的时候,设置tomcat让其将请求全部转换成指定的编码..能解决部分乱码.配置如下

   
 <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="utf-8"
/>

>>>>2<<<<<

客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。

所以好多时候我们都要设置下,比如ajax的js请求.设置成post方式.以免麻烦.filter代码配置如下:

<!-- 定义编码过滤器 -->
	<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>/*</url-pattern> 
	</filter-mapping>
?

?>>>>3<<<<<

大多数的乱码问题有以上两种方案基本解决,那么还不行.就是麻烦的js的编码和..URL以及URL的参数的中文了.

JS中编码有escape(),encodeURI(),encodeURIComponent()三个,escape()在提交页面和 处理页面的编码格式相同的情况下(比如它们都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,区别 在于encodeURIComponent()也对"?"等特殊字符进行编码。

? 这里需要注意的是encodeURI()要进行两次编码.因为编码转义成%号.需要对%好再次进行转义.可能要点绕.但进行两次肯定正确:如encodeURI(encodeURI("乱码"));

?

乱码解决方案:我想到的就这几点了.大家还有可以一起讨论.

?

借鉴:http://tao160911.iteye.com/blog/869117

?

?

?

?