一、中文乱码说明

在Java Web项目中,由于pageEncoding、contentType和charset等编码属性的设置不恰当往往导致显示中文字符会出现乱码问题。例如,在Java Web项目的代码采用UTF-8进行编码,而在浏览器使用ISO-8859-1进行编码,因此会产生中文乱码问题。

二、相关知识

1.JSP中pageEncoding、contentType以及contentType的charset的理解与区别:

1)pageEncoing:设置JSP源文件本身和响应正文中的字符集编码;

2)contentType:设置JSP原文建和响应正文中的字符集编码以及MIME类型;

3)charset:设置服务器发送给客服端时的内容的字符集编码。

2.在Java Web项目中,通常情况下,产生中文乱码有三种情况:

第一种情况:调用JSP页面时产生中文乱码;

第二种情况:调用Servlet页面时产生中文乱码;

第三种情况:通过post请求传递包含中文字符的表单时出现中文乱码。

3.几种常见的编码格式:

1)ISO-8859-1:属于单字节编码,最多能表示字符范围为0-255,应用于英文系列;

2)GB2312/GBK:是汉字的国标码,专门用来表示汉字,是双字节编码,而英文字母和ISO-8859-1一致。其中GBK编码能够用来同时表示繁体字和简体字,而GB2312只能表示简体字,GBK是兼容GB2312编码;

3)UTF-8:是一种用以解决国际上字符的多字节编码,它对英文使用一个字节,对中文使用三个字节进行编码,是国际上比较通用的字符编码。

解决方案

解决思路:根本上就是使编码保持一致,即:

1、JSP的字符编码格式。(JSP页面的头部添加<%@page contentType="text/html"pageEncoding="UTF-8"%>或者将pageEncoding中的值改为UTF-8)

2、Request的字符编码格式。

1)(request.setCharacterEncoding( UTF-8));

2)spring的字符集过滤器org.springframework.web.filter.CharacterEncodingFilter配置,如:

  <filter><description>字符集过滤器</description><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><description>字符集编码</description><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><filter>

但以上方法只对post 有效,而当HTTP请求以GET方式发出时,请求参数位于请求头的URI中。过滤器只对请求体中的内容编码,而请求头不编码,Tomcat对于GET请求会使用iso-8859-1编码(tomcat默认编码)。

get请求

1、修改tomcat的编码

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

2、但有时需要根据文档调用第三方接口。这时可以采用。

new String(key.getBytes("iso8859-1"), "utf-8");

3、在客户端使用 URLEncoder.encode(“中文”,”UTF-8”)对中文参数进行编码,在服务器端需要进行解码this.setName(java.net.URLDecoder.decode(name, “UTF-8”));

转载于:https://www.cnblogs.com/magic101/p/8798150.html

java web乱码及解决方法相关推荐

  1. java碰到乱码如何解决方法_如何处理java的乱码

    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的! 如果中国的程序员不会遇到乱码,那么只有使用汉语编程.汉语编程是怎么回事, ...

  2. java 中文乱码的解决方法

    1. 这方法行之有效,但是谨慎用,它会作用服务器. 超链接中带有的中文字符,<a class="add" href = "system/showDataAdd.ac ...

  3. java utf 8_java utf-8 乱码的解决方法

    java utf-8 乱码的解决方法 发布时间:2020-04-28 14:52:16 来源:亿速云 阅读:288 作者:小新 这篇文章主要为大家详细介绍了java utf-8 乱码的解决方法,文中示 ...

  4. Java Web项目中解决中文乱码方法总结

    一.了解常识: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat:默认是ISO8859-1,不 ...

  5. java显示html乱码怎么解决方法_Java web解决各种乱码问题

    首先先明白一下Java web里涉及到编码的地方: 1.jsp编码jsp顶部有两处:charset和pageEncoding charset:服务器发往客户端展现时的编码; pageEncoding: ...

  6. java 显示中文_java显示中文乱码的解决方法

    java显示中文乱码的解决方法 发布时间:2020-06-16 11:08:43 来源:亿速云 阅读:97 作者:Leah 这篇文章运用简单易懂的例子给大家介绍java显示中文乱码的解决方法,代码非常 ...

  7. java zhs16gbk_JAVA-----乱码的处理 乱码的解决方法总结

    为什么说乱码是程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!工作遇到各种各样的乱码的解决方法总结一下. 对于Java由于默认的编码方式是 ...

  8. java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别

    java web 中有效解决中文乱码问题-pageEncoding与charset区别, response和request的setCharacterEncoding 区别 参考文章: (1)java ...

  9. ubuntu下eclipse打开window下的java文件,注释内容为乱码,解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 今天打开了以前的工程,想看看以前写的代码,打开后发现以前的java源文件的注释变成了乱码,于是在google上开始了搜索,得到 ...

最新文章

  1. 把人脑智能化后,能再创造出更强的人工智能吗?
  2. 初识Kubernetes
  3. Java:XML篇,使用SAX写入XML数据
  4. java 泛型详解、Java中的泛型方法、 java泛型详解
  5. MySQL基础(一)介绍和配置
  6. byte 类型比较_基本类型和包装类对象使用 == 和 equals进行比较的结果?
  7. 趣头条被传与腾讯、阿里洽谈出售资产 官方回应:完全子虚乌有
  8. 风变Python 之旅5----for...in 以及while的循环学习
  9. 华为存储学习笔记-3
  10. 卡尔曼滤波估matlab算法,INS-matlab 利用卡尔曼滤波算法估计惯导系统状态量的源代码~谢谢分享 - 下载 - 搜珍网...
  11. ORACLE 11G利用 ORDS+pljson来实现json_table 效果
  12. HDU 4939 Stupid Tower Defense 简单DP
  13. 【嵌入式】7段数码管电路原理
  14. python条件语句作用_Python 条件语句
  15. 铁柱学习node.js
  16. 数组系列—连续数中寻找缺失的数字
  17. 洛谷P3975 - [TJOI2015]弦论
  18. 微信专属输入法你有了吗?防窃听、护隐私
  19. 罗永浩的1.1亿,薇娅的卖火箭,蛋蛋的4.8亿,直播魔幻夜埋下了什么
  20. Dropout解决过拟合问题

热门文章

  1. c语言通讯录链表结构体排序,写个通讯录 想要简单就全用的是结构体数组要求改成用链表的...专业的朋友看能不能最简洁的改一下...
  2. 交流电路红的视在功率VA数值上是电压与电流的乘积等于有功功率的平方加上无功功率的平方,再开平方。无功功率将电感或电容元件与交流电源往复交换的功率。虽然无功元件整体做功是0.吸收和释放相等
  3. ps切图后 JAVA开发_做一个会PS切图的前端开发
  4. 007-body中的表格标签
  5. 模拟linux内核异常,Linux内核态缺页会发生什么 - 玩转Exception fixup表
  6. pg数据库日志 linux,Linux下postgresql回归测试
  7. 鲸探发布点评:9月8日发售《汝阳黄河巨龙》数字藏品
  8. 场景设计概论html,环境艺术设计概论教案
  9. 算法系列:矩阵相乘算法的MapReduce实现
  10. Linux环境下apache阿帕奇安装配置失败报错,编译失败的解决方案,Apache安装升级OpsenSSL步骤