java中文乱码decode_Java WEB开发中的中文乱码问题解决
在项目中总是遇到乱码问题,有时候在网上查找到了解决方案,但是没有记录下来为什么出现的乱码。因为出现乱码的方式有好几种,我简单总结一下吧,为以后留着用,也算总结学习一下。
一般来讲,为了处理乱码问题,在javaweb中我们需要注意哪些地方?
1、java文件的编码格式
2、jsp页面的编码格式
3、在servlet中对request、response对象的编码格式的设定
4、浏览器中查看页面的字符集编码格式
前提:
1.开发和编译代码时指定字符集,JBuilder和Eclipse都可以在项目属性中设置。页面的编码格式一致:
所有页面的编码格式应该尽量一样,因为有时候在两个页面之间跳转的时候,如果编码格式不一,那么服务器不知道该用哪一种编码格式。
2.页面编码格式和tomcat配置文件中的编码格式保持一致:
tomcat/conf/server.xml配置文件中Connector(连接器)标签URIEncoding(统一资源标示符编码)的属性为"GBK"或"UTF-8"。
3.使用过滤器,如果所有请求都通过一个servlet控制分配器,那么使用servlet的filter的执行语句,将浏览器发送过来的请求都设置编码为utf-8.
在web.xml文件中:
SetCharacterEncodingFilter
com.struts.beans.SetCharacterEncodingFilter
encoding
utf-8
SetCharacterEncodingFilter
/*
在类中:
public class SetCharacterEncodingFilter implements Filter {
private String encoding;
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding(this.encoding);
chain.doFilter(request, response);
}}
4.设定数据库连接方式是utf-8.
易出现乱码的方式:
1.通过超链接传递中文乱码。超链接地址栏传参和form表单的get方法,都是以get()方式向服务器提交的数据。这个时候我们会发现地址栏中出现的是中文被编码之后的一串%的东东,
">联结
2.通过javascript传递中文乱码
function getName(){
var name=jQuery("#name").val();
name= encodeURI(encodeURI(name));//需要经过两次编码
window.location.href="user.action?name="+name;
}
在后台Action类中需要解码:
String name= request.getParameter("name");
try {
name= URLDecoder.decode(name, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
因为iso-8859-1是Java中网络传输使用的标准字符集,request.getParameter("name")得到的还是ISO-8859-1字符集,所以要转换一下才不会是乱码。
3.通过表单get提交中文乱码
第一:先解码然后转码
第二:get走的是url提交方式,而在进入url之前已经进行了iso-8859-1的编码。要想影响这个编码可以在server.xml文件中Connector节点中添加userBodyEncodingURI="true",就可以控制tomcat对get方式的汉字编码。
4.通过表单post提交中文乱码
第一:其实这也和tomcat的内置编码有关,如果没有设置URIEncoding="UTF-8",那么默认的编码是iso8859-1,需要在servlet中String str=new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8").每一个汉字都需要这样编码,很麻烦。
第二:设定执行请求编码的格式request.setCharactorEncoding("UTF-8");
String str=request.getParameter("name");但是这种方法只针对post提交的参数有效,对于get和上传的方式则是无能为力的。
分享到:
2012-04-25 09:43
浏览 3183
评论
java中文乱码decode_Java WEB开发中的中文乱码问题解决相关推荐
- java css路径_java web开发中CSS路径有问题吗,运行jsp文件为什么找不到css文件?...
---------------------------------------------------------------------------------------------------- ...
- java输出的汉字变成乱码_Java Web项目中解决中文乱码方法总结
一.了解常识: 1.UTF-8国际编码,GBK中文编码.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.web tomcat:默认是ISO8859-1,不 ...
- java sessionstate_在Java Web开发中自定义Session
Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...
- java web开发中Filter使用Annotation配置 (转载)
为什么80%的码农都做不了架构师?>>> 为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...
- Java Web开发中路径问题小结
Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...
- java和Mysql数据一致性_java web开发中数据一致性的问题
在java web开发中,数据存储介质有如下几种数据库(rdms,nosql) 缓存系统(redis,memcached,ehcache) java内部数据结构(map,list) 文件存储(fast ...
- java开发 图片显示不出来_java web开发中 显示图片的问题
记录一个java Web开发中显示图片的小问题: 我碰到的问题是:把服务器上存的图片,在客户端的浏览器中显示出来.解决方法如下: 两种显示方式 一是:在servlet 或 action中直接输入图片到 ...
- java web框架struts_Struts框架在Web开发中的应用
<Struts框架在Web开发中的应用>由会员分享,可在线阅读,更多相关<Struts框架在Web开发中的应用(29页珍藏版)>请在人人文库网上搜索. 1.Struts,框架在 ...
- Java通过正则剔除乱码_正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码...
目录 1.乱码符号种类较少,用replace() 2.乱码字符种类较多,用re.sub() 3.提取字符串中的中文字符 4.提取字符串中的中文字符和数字 5.提取其他 数据清洗的时候一大烦恼就是数据中 ...
最新文章
- 《那些年啊,那些事——一个程序员的奋斗史》——74
- WIN32练习项目(函数调用监视器)
- Python:初始函数
- java bean 对象属性复制框架BeanMapping-release_0.0.2-注解支持
- HH SaaS电商系统管理后台的商品规格编辑
- ASP.NET 抓取网页内容
- LeetCode MySQL 180. 连续出现的数字(cast)
- 解决mysql“Access denied for user 'root'@'localhost'”
- Linux最大能创建多少用户,如何在Linux中创建多个用户帐户?
- Inspinia_admin-V2.3原版(英文)
- pyqt5 设置动态背景图片
- 父亲将房子过户给后代需要交税吗
- urdf转sdf制作模型包
- Prometheus资源监控工具配置小结
- TVS(瞬态抑制二极管)、Schottky(肖特基二极管)、Zener (齐纳二极管,也称稳压二极管)主要特点及区别和使用
- 【原创】【个人向】CSP-S 2019 爆炸退役记 (已完成)
- iPhone X适配之启动图适配教程
- Python下的自然语言处理利器-LTP语言技术平台 pyltp 学习手札
- RESTful API接口基本内容
- Excel(2):按上下左右键不是单元格在动,而是整个屏幕都在动
热门文章
- pthread_create()在C和C++使用区别
- dumpsys命令用法
- C++之基类构造函数初始化
- 解决/usr/bin/pip: No such file or directory
- Python安装Pytorch教程(图文详解)
- python多线程queue_python多线程+队列(提高爬虫时效性)
- python利用公式计算_从零开始用Python构造决策树(附公式、代码)
- java expression 强制出现_Java中带有强制括号对的单行循环
- apt-get出错,由于出现了太多错误,处理过程被终止
- layer checkbox