Java Web项目中解决中文乱码方法总结
2016-03-30 20:19
627 查看
第一种情况:调用jsp页面中文显示乱码
问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码。
解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然后在jsp页面的开始处添加<%@ pageEncoding="utf-8"%>就可以解决这种中文乱码问题
第二种情况:调用servlet页面显示乱码
问题描述:通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码。
解决方法:在servlet使用response对象输出前,先执行response.setContentType("text/html;charset=utf-8");设定输出内容的编码为utf-8。
第三种情况:post表单传递参数乱码
问题描述:通过jsp,html,或servlet中的表单元素把参数提交给对应的jsp或者servlet时,在接收的jsp或servlet中接收到的参数中文显示乱码。
例如:
提交jsp代码如下:
<%@ page language="java" pageEncoding="utf-8"%>
<html>
<head>
<title>输入表单</title>
</head>
<body>
<form id="inputForm" name="inputForm" method="post" action="display.jsp">
用户名:<input type="text" name="username"/><br/>
密 码 :<input type="password" name="password"/><br/>
<input type="submit" name="submit" value="提交"/>
</form>
</body>
</html>
接收参数的jsp代码如下:
<% @ page language="java" pageEncoding="utf-8"%>
<html>
<head>
<tilte>接收表单</title>
</head>
<body>
<% 在这里插入
request.setCharacterEncoding("utf-8");
%>
用户名:<%=request.getParameter("username")%><br/>
密 码:<%=request.getParameter("password")%><br/>
</body>
</html>
解决方法:在接收post提交的参数前,使用request.setCharacterEncoding("utf-8")设定接收参数的内容格式为utf-8编码。见接收表单中的插入内容即可。当然这种乱码问题最好使用中文过滤器的方法最好。
第四种情况:URI方式传递参数乱码
问题描述:使用表单传递参数,可以通过post或get方式,不适用表单,还可以使用链接方式传递参数,这种传递参数方式本质上就是get方式传递参数,这种方式中传递
的参数出现中文时也可能出现乱码。如:
<a href="/webproject/display.jsp?username=张三&password=123">显示用户名和密码</a>
解决方法:问题本质是get方式传递的参数内容默认编码方式问ISO8859-1,而且使用request.setCharacterEncoding("utf-8")也无法解决问题,要解决这个问题,修改tomcat
服务器的配置文件。修改tomcat目录下的conf/server.xml文件的第43行:
修改前内容:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="200000"
redirecPort="8443"/>
修改后内容:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="200000"
redirecPort="8443" URIEncoding="utf-8"/>
这样就可以解决这种类型的乱码问题。
第五种情况:
问题描述:在使用一些类库或者框架时,为了实现页面内容国际化,需要编写对应的properties文件。而properties文件中的中文内容在显示的时候也会出现乱码。
解决方法:这个乱码问题可以通过jdk中的native2ascii工具解决。使用如下命令:
native2ascii -encoding utf-8 display.properties display_zh_CN.properties
出现乱码问题的原因是因为java编译器只能处理Latin-1或unicode编码的字符文件。
原文链接: http://blog.csdn.net/woshifeixingzhuiyue/article/details/7561755
问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码。
解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然后在jsp页面的开始处添加<%@ pageEncoding="utf-8"%>就可以解决这种中文乱码问题
第二种情况:调用servlet页面显示乱码
问题描述:通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码。
解决方法:在servlet使用response对象输出前,先执行response.setContentType("text/html;charset=utf-8");设定输出内容的编码为utf-8。
第三种情况:post表单传递参数乱码
问题描述:通过jsp,html,或servlet中的表单元素把参数提交给对应的jsp或者servlet时,在接收的jsp或servlet中接收到的参数中文显示乱码。
例如:
提交jsp代码如下:
<%@ page language="java" pageEncoding="utf-8"%>
<html>
<head>
<title>输入表单</title>
</head>
<body>
<form id="inputForm" name="inputForm" method="post" action="display.jsp">
用户名:<input type="text" name="username"/><br/>
密 码 :<input type="password" name="password"/><br/>
<input type="submit" name="submit" value="提交"/>
</form>
</body>
</html>
接收参数的jsp代码如下:
<% @ page language="java" pageEncoding="utf-8"%>
<html>
<head>
<tilte>接收表单</title>
</head>
<body>
<% 在这里插入
request.setCharacterEncoding("utf-8");
%>
用户名:<%=request.getParameter("username")%><br/>
密 码:<%=request.getParameter("password")%><br/>
</body>
</html>
解决方法:在接收post提交的参数前,使用request.setCharacterEncoding("utf-8")设定接收参数的内容格式为utf-8编码。见接收表单中的插入内容即可。当然这种乱码问题最好使用中文过滤器的方法最好。
第四种情况:URI方式传递参数乱码
问题描述:使用表单传递参数,可以通过post或get方式,不适用表单,还可以使用链接方式传递参数,这种传递参数方式本质上就是get方式传递参数,这种方式中传递
的参数出现中文时也可能出现乱码。如:
<a href="/webproject/display.jsp?username=张三&password=123">显示用户名和密码</a>
解决方法:问题本质是get方式传递的参数内容默认编码方式问ISO8859-1,而且使用request.setCharacterEncoding("utf-8")也无法解决问题,要解决这个问题,修改tomcat
服务器的配置文件。修改tomcat目录下的conf/server.xml文件的第43行:
修改前内容:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="200000"
redirecPort="8443"/>
修改后内容:
<Connector port="8080" protocol="HTTP/1.1"
maxThreads="150" connectionTimeout="200000"
redirecPort="8443" URIEncoding="utf-8"/>
这样就可以解决这种类型的乱码问题。
第五种情况:
问题描述:在使用一些类库或者框架时,为了实现页面内容国际化,需要编写对应的properties文件。而properties文件中的中文内容在显示的时候也会出现乱码。
解决方法:这个乱码问题可以通过jdk中的native2ascii工具解决。使用如下命令:
native2ascii -encoding utf-8 display.properties display_zh_CN.properties
出现乱码问题的原因是因为java编译器只能处理Latin-1或unicode编码的字符文件。
原文链接: http://blog.csdn.net/woshifeixingzhuiyue/article/details/7561755
相关文章推荐
- 基本排序算法java实现之选择排序
- Spring 面试题
- java GC、新生代、老年代
- 菜鸟学习之javaweb 乱码的解决
- 在Spring3中,配置DataSource的方法有6种。
- Android——电脑蓝屏重启后,studio无法认出Android环境 setup JDK(缓存!缓存!缓存)
- Java内存区域与内存溢出异常
- Java--TreeMap源码解读
- activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表
- activiti自定义流程之Spring整合activiti-modeler5.16实例(五):流程定义列表
- Java学习_多线程
- 图解教程]Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
- 引入Spring、Struts、Hibernate等框架下的 JAR 包版本号怎么看
- Spring注解@Value的用法
- Java bio nio aio
- java IO之 序列流 集合对象Properties 打印流 流对象
- HDU--2019 数列有序!
- Spring和C3P0数据连接池使用
- springMVC4(1)角色解析与入门配置实例
- Java线程模型