java web乱码问题

1,浏览器
html文件编码
<head>头部中<meta charset="字符集">标签告诉浏览器以某种特定的字符编码解释html文件。例如,如果要告诉浏览器使用utf-8字符集,则代码书写如下:<meta charset="utf-8">。浏览器打开html文件时用uft-8编码解析html文件。或者用<meta http-equiv="Content-Type" Content="text/html;charset=uft-8">替换<meta charset="utf-8">也行。

提示: 通过浏览器可以查看网页的编码方式:  


2,传输过程的request,response编码
当html文档发送form表单数据给服务器时,服务器会读取HTTP请求的“Content-Type”头信息代码来决定request,response的编码方式.如果客户端请求未定义“Content-Type”头信息,则服务器会采用缺省编码(例如:ISO-8859-1)来构建request和response。所以当出现乱码时,可以用setCharacterEncoding(String enc)方法或者filter设定request和response的编码。
提示:setCharacterEncoding(String enc)必须选择合适的编码方式。最好的办法是html文件,request,response,jsp等源码文件都采用同一种编码,例如uft-8
3,服务器
(1)编写jsp等源码文件时的编码
在编写jsp文件时,在jsp文件的头部会有一个<%@ page language="java" import="java.util.*"  pageEncoding="utf-8" contentType="text/html;charset=UTF-8" %>:
pageEncoding是jsp文件本身的编码,也就jsp文件保存在磁盘上的文件编码格式。
contentType的charset是指服务器发送给客户端的内容的编码,例如,服务器发送给浏览器的html文件的编码。

(2)编译源代码为class时JVM用的编码
JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。
       第一阶段是jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。
      第二阶段是由JAVAC的JAVA源码至java byteCode的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。
      第三次就是程序运行的结果保存成文件时,输出文件的编码。
4,数据库

不同的数据库有不同的乱码问题处理办法,可以搜索相关数据库乱码问题的解决办法。


解决方法:

1.对于同一个应用,最好统一编码,推荐为UTF-8,当然GBK也可以。 
2.正确设置JSP的pageEncoding参数 
3.在所有的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8"),从而间接实现对浏览器编码的设置。 
4.对于请求,可以使用过滤器或者在每个JSP/Servlet中设置request.setCharacterEncoding("UTF-8")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值