以下总结这段时间以来遇到的中文问题汇集:
注:以下“后台”字眼,相当于在servlet内,或者某一个类内,或者struts的action内。
1.一字符串在后台用system.out.println输出正常,保存在session里到JSP页面显示乱码
最初的乱码问题.
原因:似乎是默认的JSP页面采用8859-1编码,显示不了中文。
解决:在JSP页面上方加个<%@ page contentType="text/html;charset=utf-8"%>解决。当然,也可以用charaset="gbk","gb2312"之类的编码,不过建议还是用utf-8,详细原因去看看jdon板桥里人的那篇《中文乱码终极解决方法》。
2.提交表单,在后台读取表单内容发现乱码
原因:request的默认编码问题,具体不甚清楚,没看过tomcat源代码。。。
解决:写个fileter,具体如下:
package operator;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class SetCharacterEncodingFilter implements Filter {
protected String encoding = null;
protected FilterConfig filterConfig = null;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
this.encoding = filterConfig.getInitParameter("encoding");
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO �Զ���ɷ������
request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);
}
public void destroy() {
// TODO �Զ���ɷ������
this.encoding = null;
this.filterConfig = null;
}
protected String selectEncoding(ServletRequest request) {
return (this.encoding);
}
}
web.xml配置:
在servlet-mapping后加入以下内容:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>operator.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
3.下载时,“另保存为”默认名字显示乱码
原因:不清楚。。。
在tomcat安装目录的config/sever.xml内的
<Connector
port="80" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
加进最后的“URIEncoding="UTF8"
4.在后台用system.out.println()输出正常,保存到mysql数据库EMS显示乱码,读回数据也是乱码
原因:mysql默认采用的是latin1编码;
解决:创建表的时候要修改成utf-8。如果已存在表,用EMS的话,直接修改table-property里面的default charater set就可以了,其他管理工具不知道,没用过。
5.在后台用system.out.println()输出正常,保存到mysql数据库EMS显示乱码,读回数据时——居然正常了,直接往数据库里插入正常的中文,读出——居然乱码了;
原因:EMS管理工具的默认显示问题
解决:register数据库时,client default charater set改utf-8
注:这该死的问题困扰了我好长一段时间,一直以为我程序有问题,检查了N久,发现居然是工具显示问题。。
6.COMMON-UPLOAD 上传中文名文件时,显示乱码
原因:common-upload组件默认采用系统的编码,而页面传过来的请求采用UTF-8编码。
我的系统是简体中文WINDOWS 2K3,系统编码是GBK,当页面请求过来时,UPLOAD就把UTF8编码的流直接按GBK编码了。。。如果用new String(oldStr.getBytes("gbk"),"utf8)可以发现,部分中文可以还原回去。
解决:网上的说法五花八门,甚至有归罪于这是UPLOAD的BUG,其实只要在
DiskFileUpload fu = new DiskFileUpload();
后加一句:
fu.setHeaderEncoding("utf8");
就解决了。。。
看来有时候还是直接读英文帮助手册来得正确。。。
分享到:
- 2006-11-29 21:15
- 浏览 2241
- 评论(0)
- 论坛回复 / 浏览 (0 / 3228)
- 查看更多
相关推荐
### Java与JSP文件乱码问题综合解析 在软件开发过程中,尤其是涉及到国际化或中文处理时,文件编码问题常导致“乱码”现象,严重影响了程序的正常运行和用户体验。本文将深入探讨Java与JSP文件乱码的问题,提供一...
- 这部分讨论了如何处理JSP/Servlet中的汉字编码问题。 ##### 4.7 图解Eclipse+Tomcat集成开发Servlet - 这部分通过图解的方式介绍了如何在Eclipse IDE中配置Tomcat服务器来开发Servlet。 ##### 4.8 Servlets/JSP...
6. **问题解决**:讨论了中文乱码问题和其他常见问题,这些问题在开发过程中可能会遇到,需要针对性地解决。 7. **总结**:论文最后总结了已经实现的功能,如系统的核心操作,同时也列出了待完善的部分,如可能存在...
中文乱码问题的解决方案是系统开发中的常见挑战,其他常见问题可能涉及数据同步、性能优化等。已实现的功能包括基础的库存管理,而待完善的功能可能包括系统性能提升、用户体验优化等。 总体而言,这个JSP+MySQL...
《struts框架的验证例子》和《struts2中中文乱码处理》提供了如何使用Struts进行表单验证和解决中文乱码问题的具体实践。 - **Hibernate**:Hibernate是一个强大的对象关系映射(ORM)工具,简化了Java应用程序与...
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 [1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
request获取中文参数时可能出现乱码问题,需设置正确的编码。 8. **请求(request)生命周期与作用范围** - 请求开始到响应返回,只在当前请求范围内有效,服务器跳转也视为一次新的请求。 9. **响应对象...
外文翻译可能是对相关领域的国外研究进行的中文解读,帮助开发者了解国际上的最新技术和趋势。文献综述则汇总了关于电子投票系统的相关研究,为项目提供了理论支持。 总的来说,《JSP企业电子投票系统》的实现涉及...
这份压缩包中主要包括了三个关键文件:`Jsp帮助文档.chm`、`Jsp精华文章.chm`以及`JAVA中文_API.CHM`,这些都是Java开发者在学习和工作中不可或缺的工具。 `Jsp帮助文档.chm`是关于JavaServer Pages(JSP)的技术...
对于JSP和JDBC的MySQL乱码问题,JSP的默认请求编码是ISO8859_1,处理中文时需要将其转换为GBK。示例代码如下: ```java String str = new String(request.getParameter("name").getBytes("ISO8859-1"), "GBK"); out...
本文将对答辩常见问题进行总结,涵盖数据库连接、系统测试、前端技术、Web应用配置、编程语言、架构设计、开发工具等多个方面,旨在帮助理解这些关键概念。 1. 数据库连接:通常通过JDBC_ODBC桥接器来连接数据库。...
CSS2.0中文手册.chm EJB.chm Hibernate_3.2.0_Reference_zh_CN.chm html语法教程.chm J2EE 1.3.1 API.chm J2EE_6.0_API.chm Javascript10.chm JAVA中文_API.CHM JDK_API_1_6_zh_CN.CHM.lnk Jsp帮助文档.chm Jsp精华...
GBK和GB2312都是针对中文的编码,但GBK的字符集比GB2312大,包含了更多的汉字和符号。因此,误用GB2312编码可能会导致部分字符无法正确显示。 使用Cookie传递数据虽然方便,但也存在一些问题。一是Cookie的大小有限...
2009-03-20 16:37 254350 86752 常见的专业问题解决办法\解决Struts中ApplicationResources_properties文件不支持中文问题_微科工作室 QQ:28790953____.mht 2009-02-25 08:45 文件夹 文件夹 常见的专业问题解决办法...
教师业绩管理系统将改变以往个人填报和单位审核的流程关系,由系统生成教师的真实工作业绩,学年末只需做简单的统计汇总,所需报表系统就会生成。教师业绩管理系统的基本功能:用户注册管理、 业绩项目管理、 指标...
因此,针对JFreeChart中的中文乱码问题,本文将汇总并整理一系列有效的解决方案。 #### JFreeChart简介 JFreeChart是一款开源Java图表库,它提供了丰富的API来创建高质量的图表。JFreeChart支持多种类型的图表,...
当使用Ajax发送请求时,JavaScript默认使用ISO-8859-1编码,因此需要对包含中文的参数进行编码。一种常见做法是在发送请求前使用`encodeURI()`或`encodeURIComponent()`方法对参数进行编码,例如`var url = ...
在配置 Tomcat 时,我们需要修改 server.xml 文件,添加 URIEncoding="UTF-8" 配置,以便解决中文乱码问题。同时,我们还需要添加一个 init 参数,用于指定文件编码。 5. 启动服务 启动服务时,我们需要先启动 ...