在项目中总是遇到乱码问题,有时候在网上查找到了解决方案,但是没有记录下来为什么出现的乱码。因为出现乱码的方式有好几种,我简单总结一下吧,为以后留着用,也算总结学习一下。

一般来讲,为了处理乱码问题,在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开发中的中文乱码问题解决相关推荐

  1. java css路径_java web开发中CSS路径有问题吗,运行jsp文件为什么找不到css文件?...

    ---------------------------------------------------------------------------------------------------- ...

  2. java输出的汉字变成乱码_Java Web项目中解决中文乱码方法总结

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

  3. java sessionstate_在Java Web开发中自定义Session

    Session在存储安全性要求较高的会话信息方面是必不可少的,对于分布式Web应用自定义Session支持独立的状态服务器或集群是必须的.本文就来教大家如何在Java Web开发中自定义Session ...

  4. java web开发中Filter使用Annotation配置 (转载)

    为什么80%的码农都做不了架构师?>>>    为了在java中得到request和response对象,搜索到了 <如何在Java的普通类中获取Session以及reques ...

  5. Java Web开发中路径问题小结

    Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...

  6. java和Mysql数据一致性_java web开发中数据一致性的问题

    在java web开发中,数据存储介质有如下几种数据库(rdms,nosql) 缓存系统(redis,memcached,ehcache) java内部数据结构(map,list) 文件存储(fast ...

  7. java开发 图片显示不出来_java web开发中 显示图片的问题

    记录一个java Web开发中显示图片的小问题: 我碰到的问题是:把服务器上存的图片,在客户端的浏览器中显示出来.解决方法如下: 两种显示方式 一是:在servlet 或 action中直接输入图片到 ...

  8. java web框架struts_Struts框架在Web开发中的应用

    <Struts框架在Web开发中的应用>由会员分享,可在线阅读,更多相关<Struts框架在Web开发中的应用(29页珍藏版)>请在人人文库网上搜索. 1.Struts,框架在 ...

  9. Java通过正则剔除乱码_正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码...

    目录 1.乱码符号种类较少,用replace() 2.乱码字符种类较多,用re.sub() 3.提取字符串中的中文字符 4.提取字符串中的中文字符和数字 5.提取其他 数据清洗的时候一大烦恼就是数据中 ...

最新文章

  1. 《那些年啊,那些事——一个程序员的奋斗史》——74
  2. WIN32练习项目(函数调用监视器)
  3. Python:初始函数
  4. java bean 对象属性复制框架BeanMapping-release_0.0.2-注解支持
  5. HH SaaS电商系统管理后台的商品规格编辑
  6. ASP.NET 抓取网页内容
  7. LeetCode MySQL 180. 连续出现的数字(cast)
  8. 解决mysql“Access denied for user 'root'@'localhost'”
  9. Linux最大能创建多少用户,如何在Linux中创建多个用户帐户?
  10. Inspinia_admin-V2.3原版(英文)
  11. pyqt5 设置动态背景图片
  12. 父亲将房子过户给后代需要交税吗
  13. urdf转sdf制作模型包
  14. Prometheus资源监控工具配置小结
  15. TVS(瞬态抑制二极管)、Schottky(肖特基二极管)、Zener (齐纳二极管,也称稳压二极管)主要特点及区别和使用
  16. 【原创】【个人向】CSP-S 2019 爆炸退役记 (已完成)
  17. iPhone X适配之启动图适配教程
  18. Python下的自然语言处理利器-LTP语言技术平台 pyltp 学习手札
  19. RESTful API接口基本内容
  20. Excel(2):按上下左右键不是单元格在动,而是整个屏幕都在动

热门文章

  1. pthread_create()在C和C++使用区别
  2. dumpsys命令用法
  3. C++之基类构造函数初始化
  4. 解决/usr/bin/pip: No such file or directory
  5. Python安装Pytorch教程(图文详解)
  6. python多线程queue_python多线程+队列(提高爬虫时效性)
  7. python利用公式计算_从零开始用Python构造决策树(附公式、代码)
  8. java expression 强制出现_Java中带有强制括号对的单行循环
  9. apt-get出错,由于出现了太多错误,处理过程被终止
  10. layer checkbox