• 1. JAVA WEB开发实战经典第10章:中文乱码处理Java Web程序设计
  • 2. 中文乱码中文乱码 本来应该显示中文,但显示的却是一串问号或其他不能识别的字符
  • 3. 字符集和字符编码字符: 各种文字和符号的总称 字符编码的目的 计算机是以0、1这样的二进制数据进行数据的识别和存储,计算机中需要进行字符编码,以便计算机能够识别和存储各种文字 字符编码的分类 ASCII字符集、GB2312、GBK、Unicode
  • 4. 字符集和字符编码ASCII(American Standard Code for Information Interchange) 基于罗马字母表的一套计算机编码系统 主要用于显示现代英语和其他西欧语言 最通用的单字节编码系统 能表示128个符号:回车键、退格、换行、英文字符、阿拉伯字符、西文符号 ISO8859-1 扩展了ASCII编码 能表示256个符号
  • 5. 字符集和字符编码GB2312:信息交换用汉字编码字符集-基本集 是中国国家标准的简体中文字符集 收录的汉字覆盖99.75的使用率 GBK 在GB2312的基础上扩展了繁体中文
  • 6. 字符集和字符编码Unicode(Universal Multiple-Octet Coded Character Set) 通用多8位编码字符集的简称 支持世界上超过650种语言的国际字符集 UTF-8(Unicode Translation Format) 是Unicode的其中一个使用方式 便于在不同计算机之间使用网络传输不同语言和编码的文字 使双字节的Unicode能在现存的处理单字节的系统上正确传输 使用可变长度字节来存储Unicode字符
  • 7. Java Web中的中文乱码处理中文乱码产生的原因 在Java Web中,通常包括客户端页面(HTML)、Web服务器(Tomcat)、Web应用程序(Servlet、JSP)和数据库部分。若不指定编码格式则客户端会采用默认的字符集(例如GB2312)提交数据,而Web服务器默认采用ISO8859-1解析客户端提交的数据。JDBC驱动程序多数也采用ISO8859-1来解析和存储数据,这几造成客户端、服务器端、Web应用和数据库编码不一致。 输入的中文字符若不进行编码转换就会出现乱码。
  • 8. Java Web中的中文乱码处理访问HTML页面或JSP页面出现中文乱码 HTML头文件 原因: 解决方法: charset=ISO-8859-1改为charset=UTF-8 在MyEclipse中的Window-Preferences-MyEclipse-Files and Editors-HTML,在右侧Encoding下拉框中选择默认编码格式,如UTF-8
  • 9. Java Web中的中文乱码处理访问HTML页面或JSP页面出现中文乱码 JSP的page指令元素 原因: <%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> 解决方法: pageEncoding="ISO-8859-1"改为pageEncoding="UTF-8" 在MyEclipse中的Window-Preferences-MyEclipse-Files and Editors-JSP,在右侧Encoding下拉框中选择默认编码格式,如UTF-8
  • 10. Java Web中的中文乱码处理访问Servlet输出 Servlet输出中文时出现乱码 原因: response.setContentType("text/html"); 解决方法: response.setContentType("text/html");改为response.setContentType("text/html;charset=UTF-8");
  • 11. Java Web中的中文乱码处理POST方式传递参数出现中文乱码 POST传递的方式 将
    表单中method设置为post
    原因 其根本原因是客户端浏览器采用UTF-8的编码,而Web服务器默认采用的是ISO8859-1编码
  • 12. Java Web中的中文乱码处理POST方式传递参数出现中文乱码 解决方法 设置请求对象的编码格式 在接收客户端提交的请求参数String name=request.getParameter(“name”);之前增加 request.setCharacterEncoding(“UTF-8”); 使用过滤器
  • 13. Java Web中的中文乱码处理GET方式传递参数出现中文乱码 GET传递的两种方式 将
    表单中method设置为GET
    通过URL传递 http://localhost:8080/ch10/testServlet?name=张三 原因 从客户端浏览器提交到后台testServlet的过程出现编码错误导致了乱码。其根本原因是客户端浏览器采用UTF-8的编码,而Web服务器默认采用的是ISO8859-1编码
  • 14. Java Web中的中文乱码处理GET方式传递参数出现中文乱码 解决方法 编码转换 在语句String name=request.getParameter(“name”);后增加 name=new String(name.getBytes(“ISO8859-1”),”UTF-8”);