1. 开发环境乱码 -- eclipse或ant编译乱码
将java系统默认的字符集cp1253 改成GBK 修改控制面板--区域与语言
否则在用ant运行java程序的时候会出现编码的错误
原因是
java 在运行时会调用系统的默认配置文件System.getProperties();
其中 有个file.encoding 的属性决定编码集,如果是英文版的操作系统则file.encoding=CP1253
所以ant 运行中文程序会乱码
如果不想修改系统默认字符集的话,可以再ant java target中加入下面语句
<javac srcdir="${project.src}"
destdir="${project.output.build}"
debug="on" encoding="UTF-8"
deprecation="on"
listfiles="on"
includeAntRuntime="no">
<compilerarg value="-Xlint:all"/>
<classpath refid="project.classpath"/>
<classpath refid="tomcat.classpath"/>
</javac>
<java classpathref="project.classpath" classname="com.mose.ParserEnglish" fork="true" failonerror="true">
<sysproperty key="file.encoding" value="UTF-8"/>
<arg value="-h"/>
</java>
2. web开发乱码
2.1 解决响应中的乱码
何为响应中的乱码?把页面中的“username”改成“用户名”你就知道了。
所谓响应中的乱码,就是显示页面上的乱码,因为页面数据是从服务器一端放入响应(response)中,然后发送给浏览器,如果响应中的数据无法被正常解析,就会出现乱码问题。
解决方法
在http的响应(response)中添加编码信息,使用如下方式:
<%@ page contentType="text/html; charset=gb2312"%>
这段要放在jsp页面的第一行,用来指定响应的类型和编码格式,contentType为text/html就是html内容,charset表示编码为gb2312。这样浏览器就可以从响应中获得编码格式了。
还需要在html中指定编码格式。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>title</title>
</head>
2.1 POST乱码
因为发送请求的时候,使用的编码是iso-8859-1,意味着只有英文是有效字符
把form里加上method="POST",让form提交的时候使用POST方式。
怎么解决呢?我们要jsp最前面加上一条java语句,设置请求的字符编码。
<%
request.setCharacterEncoding("gb2312");
%>
2.2. GET乱码
直接点击超链接,form的默认提交方式都是GET。
POST方式下的解决方式还算简单,因为POST方式下提交的数据都是以二进制的方式附加在http请求的body部分发送,只需要在后台指定编码格式就足矣解决。
GET方式下会将参数直接附加到url后面,这部分参数无法使用request.setCharacterEncoding()处理,结果就是get形式的所有中文都变成了乱码。
<%
String username = request.getParameter("username");
byte[] bytes = username.getBytes("iso-8859-1");
String result = new String(bytes, "gb2312");
out.print(result);
%>
3.使用spring解决乱码问题
利用spring自定义的CharacterEncodingFilter,使用方式如下。
在web.xml文件中添加
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
//过滤器的实现代码
protected void doFilterInternal(
HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {
request.setCharacterEncoding(this.encoding);
if (this.forceEncoding && responseSetCharacterEncodingAvailable) {
response.setCharacterEncoding(this.encoding);
}
}
filterChain.doFilter(request, response);
} |
附:JSP中的编码设置
1. pageEncoding:<%@ page pageEncoding="UTF-8"%>
设置JSP编译成Servlet时使用的编码
2. contentType: <%@ page contentType="text/html; charset=UTF-8"%>
对服务器响应进行重新编码,即jsp的输出流在浏览器中显示的编码
3. html页面charset:<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
网页的编码信息 ,说明页面制作所使用的编码
4. request.setCharacterEncoding() -- 可用在servlet和jsp页面中
作用是设置对客户端请求进行重新编码的编码,即post方式提交的数据进行编码。
5. response.setCharacterEncoding() -- 可用在servlet和jsp页面中
对服务器响应进行重新编码,即jsp的输出流在浏览器中显示的编码,与<%@ page contentType="text/html;charset=UTF-8"%>一样
6. response.setContentType() -- 可用在servlet和jsp页面中
对服务器响应进行重新编码,即jsp的输出流在浏览器中显示的编码,与<%@ page contentType="text/html;charset=UTF-8"%>一样
7.response.setHeader("Content-Type","text/html;charset=UTF-8"); -- 可用在servlet和jsp页面中
与<META http-equiv="Content-Type" content="text/html; charset=UTF-8">一样
分享到:
相关推荐
php中url地址栏传参数中文乱码解决方法汇总
解决pdf2swf 出现中文乱码的问题,汇总了需要的工具以及教程网址.希望对需要的有所帮助
springMVC框架遇到中文乱码的解决思路汇总,包括从配置到注解的详细描述,帮助开发人员解决spirngMVC中文乱码问题
PKS报警汇总页面中文乱码解决办法
ajax乱码解决总结 第一,javascript沿用java的字符处理方式,内部是使用unicode来处理所有字符的, 第二,utf-8是每个汉字(unicode字符)用3个字节来存储。 第三,用utf-8来send数据是不会出现乱码的,是后台程序...
arcgis10.2以后,shp文件属性表中文会有乱码的情况(该情况通常在原有低版本arcgis升级版本后才出现),解决属性表乱码的插件
主要为大家详细汇总了Java Web开发项目中中文乱码的解决方法,分析了5种Java Web中文乱码情况,感兴趣的小伙伴们可以参考一下
本文主要给大家介绍了关于php中文乱码问题的终极解决方案,分享出来供大家参考学习,在开始之前,我们先来谈谈为什么会出现中文乱码? 很多新手朋友学习PHP的时候,发现程序中的中文在输出的时候会出现乱码的问题,...
这篇博文只是对网上关于jfreechart中文乱码解决方法的一个汇总整理。
本文给大家介绍四种方法解决springmvc 发送ajax出现中文乱码问题,非常具有参考借鉴价值,感兴趣的朋友一起学习吧
主要汇总介绍了几种解决PHP+MYSQL中文乱码问题的方法,十分的实用,有需要的小伙伴可以参考下。
SPC5Studio 是 ST 提供的用于 SPC5 系列汽车级 MCU 嵌入式应用开发的集成开发环境,其 ...常见问题的解决方法。旨在使工程人员进一步熟悉软件开发工具,能够高效地利用 SPC5Studio,加快项目开发的进程。
直接使用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半。那么我们来看看如何解决这个问题呢。
归纳了JLINK使用过程中碰到的问题,及解决办法
HTTP1.1.chm httpwatch.zip HTTP协议(RFC2616)中文版.pdf HTTP协议.ppt ...telnet输入乱码的解决.doc tomcat下配置https环境 tomcat部署https笔记.txt Tomcat配置Https访问 win7下开启telnet命令.doc
3.4.2 解决中文乱码 3.4.3 获取客户端数据 3.5 response回应对象的应用 3.5.1 HTTP头信息的操作 3.5.2 设置MIME类型 3.5 13页面重定向操作 3.6 Session会话对象的应用 3.6.1 session的生命周期 3.6.2 会话的创建与...
帮助解决网页和JS文件中的中文编码问题的小工具 慎用const关键字 装箱,拆箱以及反射 动态调用对象的属性和方法——性能和灵活性兼备的方法 消除由try/catch语句带来的warning 微软的应试题完整版(附答案) 一个...