中文乱码问题
2016-06-13 00:20
211 查看
一、常见的编码格式
1) ISO8859-1属于单字节编码,最多能表示字符范围是0~255,应用于英文系列。
2) GB2312/GBK属于汉字的国标码,专门用来表示汉字的,是双字节编码,兼容ISO08859-1编码。
GBK表示同时表示繁体字和简体字,GBK兼容GB2312。
3)Unicode 属于最统一的编码,可以表示所有的语言的字符,定长双字节编码。不兼容任何其他的编码,定长便于计算机处理,java就是用Unicode编码处理的。
4)UTF-8
考虑到Unicode编码不兼容ISO8859-1编码,而且容易占用更多的空间,就产生了。UTF编码是不定长的,每一个字符的长度为1~6个字节不等。英文占一个,汉字占三个字节。
二、解决方案
1.jsp编译
<%@page contentType="text/html" pageEndcoding="GBK"%>
2.jsp输出
指定文件输出到browser时使用的编码,设置文件头。
<%@page contentType="text/html;charset=GBK"%>
与设置response.setCharacterEnding("GBK")
3.META
<META http-equiv.......charset=GBK"/>
如果采用了jsp输出和meta设置两种编码指定的方式,则jsp优先。
4.form设置
<from accept-charset='gb2312'>
不设置,浏览器也会使用网页的编码
三、web应用程序乱码的原因
1.jsp页面被编译为class时,如果未指定字符集,默认使用ISO8859-1的编码格式,这样中文就会乱码。
2.使用表单时如果设定提交方式为post而没有设置提交的编码格式,也会默认ISO提交,而接受的jsp却以UTP-8的方式接受。
3.GET提交数据时,tomcat会以GET的默认方式ISO对汉字进行编码,后追加URL,导致乱码。
解决方案
1.在eclipse中设置jsp文件编码格式
2.指定jsp的字符集
3.在程序获取页面数据时
response.setContentType("text/html;charset=gb2312");
responset.setCharacterEnconding("gb2312");
4.将中文作为参数传递时:
www.weihua.jsp?username="+java.net.UTLEncoder.encode(uername)
然后在接受页面:
username=new String(request.getParamenter("uesername").getBytes("8859-1"));
1) ISO8859-1属于单字节编码,最多能表示字符范围是0~255,应用于英文系列。
2) GB2312/GBK属于汉字的国标码,专门用来表示汉字的,是双字节编码,兼容ISO08859-1编码。
GBK表示同时表示繁体字和简体字,GBK兼容GB2312。
3)Unicode 属于最统一的编码,可以表示所有的语言的字符,定长双字节编码。不兼容任何其他的编码,定长便于计算机处理,java就是用Unicode编码处理的。
4)UTF-8
考虑到Unicode编码不兼容ISO8859-1编码,而且容易占用更多的空间,就产生了。UTF编码是不定长的,每一个字符的长度为1~6个字节不等。英文占一个,汉字占三个字节。
二、解决方案
1.jsp编译
<%@page contentType="text/html" pageEndcoding="GBK"%>
2.jsp输出
指定文件输出到browser时使用的编码,设置文件头。
<%@page contentType="text/html;charset=GBK"%>
与设置response.setCharacterEnding("GBK")
3.META
<META http-equiv.......charset=GBK"/>
如果采用了jsp输出和meta设置两种编码指定的方式,则jsp优先。
4.form设置
<from accept-charset='gb2312'>
不设置,浏览器也会使用网页的编码
三、web应用程序乱码的原因
1.jsp页面被编译为class时,如果未指定字符集,默认使用ISO8859-1的编码格式,这样中文就会乱码。
2.使用表单时如果设定提交方式为post而没有设置提交的编码格式,也会默认ISO提交,而接受的jsp却以UTP-8的方式接受。
3.GET提交数据时,tomcat会以GET的默认方式ISO对汉字进行编码,后追加URL,导致乱码。
解决方案
1.在eclipse中设置jsp文件编码格式
2.指定jsp的字符集
3.在程序获取页面数据时
response.setContentType("text/html;charset=gb2312");
responset.setCharacterEnconding("gb2312");
4.将中文作为参数传递时:
www.weihua.jsp?username="+java.net.UTLEncoder.encode(uername)
然后在接受页面:
username=new String(request.getParamenter("uesername").getBytes("8859-1"));
相关文章推荐
- Glide 3.7如何实现圆形Transformation
- bzoj4540【HNOI2016】序列
- 《人月神话》阅读笔记(三)
- python中简单的类定义及调用方法
- 在Eclipse下使用Maven创建SpringMVC样例项目
- 代理模式2
- JAVA运行时数据区域
- 关于最近学习的一些方法总结
- Android AppBar
- [LightOJ1017]Brush (III)(dp)
- Bootstrap应用基本模板
- Swift: print() vs println() vs NSLog()
- Hive 优化 (important)
- Collections的Comparable,Comparator
- Centos 6.5 防火墙配置详解
- 五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
- 打印100~200之间的素数
- SpringMVC@RequestBody小细节
- 当前标识没有对"Temporary ASP.NET Files"的写访问权限的解决办法
- 梳理jsp-工作原理