java 前端与后端联动中文字符编码问题

web项目前端与后端联动中文字符编码问题

web项目中往往需要将中文字符从前端传递到后端,或者从后端传递前端,这时你有可能会遇到中文乱码问题,究其原因是前端,服务器,后端编码格式不一致导致的,关系如下图:

java 前端与后端联动中文字符编码问题_第1张图片

由于前端浏览器默认的编码格式是GBK,服务器Tomcat的编码格式为ISO-8895-1,而后端的编码格式是utf-8导致的,解决这问题就是在后端传递数据与接收数据时改变下编码格式:

一.接收前端传递的String数据

拿注册时用户名来举一个栗子,在servlet接收用户名时利用getBytes(String charsetName),使用指定的字符集将此String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。再用String(byte[] bytes,String charsetName) 通过使用指定的charset 解码指定的 byte 数组,构造一个新的String

关键代码如下:

String user = new String(request.getParameter("user").getBytes("ISO-8859-1"),"utf-8");	

还有另外一种解决方案就是在web.xml中配置过滤器,这种方法是在项目中被广用的方法,也省去了对很多字段进行转码的麻烦,优先推荐这种方式.


	
	 
		encoding
		org.springframework.web.filter.CharacterEncodingFilter
		
			encoding
			UTF-8
		
	
	
	
	
		encoding
		*.do
	

这么配置后从前端到后端传字段时就不用再考虑编码不兼容问题了。

还有另外一种情况会出现乱码问题,那就是当用get的请求方式时候,传输中文会出现乱码,这时可以改变Tomcat监视端口的编码来解决
在conf目录下找到server.xml文件打开,找到port="8080"所对应的标签,在标签最后面加上URIEncoding="UTF-8",重启服务器即可,关键代码如下:
 



二.从后端传递数据到前端

有两种方式可以达到目的

方法一:

response.setContentType("text/html;charset=utf-8");

方法二:

response.setHeader("Content-Type","text/html;charset=utf-8");


ps:嫉妒是承认自己不如别人的表现!!!!!!!






你可能感兴趣的:(servlet,乱码)