javaWEB项目中的中文乱码问题总结

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zwd926/article/details/84953327

写这篇博客主要就是在做项目的时候,碰到后台到前台数据乱码的问题,并借此总结平常碰到的各种编码设置,并且也百度了很多,有时候也是经常想不起来,所以记录一下,方便以后查看!!!

 

场景:

 在实际运用场景中,当前台发起请求后,我们需要从后台返回数据给前台(前台模糊查询),这时,如果返回的数据中包含中文,则经常会出现在后台查询出来都是好好,但是传输回去就莫名的乱码了,而且,我们明明已经在 web.xml 中进行编码过滤了,但还是乱码,让人很烦!

解决办法:

第一种:那就在 controller 中的每个方法的  @RequestMappering 注解中进行编码设置

@RequestMapping(value = "/queryUserById",produces = "text/plain;charset=utf-8")

上面这种可以解决乱码,但是要在没一个注解中都写上这种,感觉代码看起来也不美观,而且都是做着重复的动作,所以,本人很喜欢用第二种方法。

第二种:直接在spring-mvc.xml的配置文件中,自定义消息转换器的编码,这样就可以设置一次就行了

<!-- 解决前台到后台传参数造成的中文乱码问题 -->
	<mvc:annotation-driven>
		<mvc:message-converters register-defaults="true">
			<bean class="org.springframework.http.converter.StringHttpMessageConverter">
				<property name="supportedMediaTypes">
					<list>
						<value>application/json;charset=utf-8</value>
						<value>text/html;charset=utf-8</value>
						<value>application/x-www-form-urlencoded</value>
					</list>
				</property>
			</bean>
		</mvc:message-converters>
	</mvc:annotation-driven>

以上就可以解决不用配置多次,重复写一样的代码就可以解决,有的人可能习惯这样写,有的不习惯,所以也有很多种方法,大家也可以完全写编码自定义类,然后交给spring处理,都是可以的。

第三种:设置tomcat编码:为解决以get方式提交的参数出现乱码,添加

修改tomcat下的conf/server.xml文件, 添加URIEncoding=”UTF-8”

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

第四种:可以在每一个方法内的最前面加上以上代码

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

最基本配置就是在web.xml中采用编码过滤器来解决数据传输的中文问题。在WEB.XML中配置一个编码过滤器,内容如下:

<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>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*</url-pattern>
  </filter-mapping>

解决HTML页面中的中文问题:

<META http-equiv=Content-Type content="text/html;charset=utf-8">

解决JSP页面中的中文问题

<%@ page contentType="text/html;charset=utf-8" language="java"%>

如果以上写的哪里有问题,请敬请谅解!

展开阅读全文

没有更多推荐了,返回首页