`
hzxdark
  • 浏览: 77759 次
社区版块
存档分类
最新评论

JSP中文问题汇总

阅读更多

以下总结这段时间以来遇到的中文问题汇集:

注:以下“后台”字眼,相当于在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");

就解决了。。。

看来有时候还是直接读英文帮助手册来得正确。。。

 

 

分享到:
评论

相关推荐

    java文件JSP文件乱码汇总

    ### Java与JSP文件乱码问题综合解析 在软件开发过程中,尤其是涉及到国际化或中文处理时,文件编码问题常导致“乱码”现象,严重影响了程序的正常运行和用户体验。本文将深入探讨Java与JSP文件乱码的问题,提供一...

    JSP 程序设计从入门到精通 PDF 教程

    - 这部分讨论了如何处理JSP/Servlet中的汉字编码问题。 ##### 4.7 图解Eclipse+Tomcat集成开发Servlet - 这部分通过图解的方式介绍了如何在Eclipse IDE中配置Tomcat服务器来开发Servlet。 ##### 4.8 Servlets/JSP...

    JSP库存管理毕业设计论文

    6. **问题解决**:讨论了中文乱码问题和其他常见问题,这些问题在开发过程中可能会遇到,需要针对性地解决。 7. **总结**:论文最后总结了已经实现的功能,如系统的核心操作,同时也列出了待完善的部分,如可能存在...

    JSP+MYSQL 库存管理系统

    中文乱码问题的解决方案是系统开发中的常见挑战,其他常见问题可能涉及数据同步、性能优化等。已实现的功能包括基础的库存管理,而待完善的功能可能包括系统性能提升、用户体验优化等。 总体而言,这个JSP+MySQL...

    JSP开发教程和源码收藏

    《struts框架的验证例子》和《struts2中中文乱码处理》提供了如何使用Struts进行表单验证和解决中文乱码问题的具体实践。 - **Hibernate**:Hibernate是一个强大的对象关系映射(ORM)工具,简化了Java应用程序与...

    jsp程序汇总

    JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 [1] 是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。

    JSP期末复习考点.docx

    request获取中文参数时可能出现乱码问题,需设置正确的编码。 8. **请求(request)生命周期与作用范围** - 请求开始到响应返回,只在当前请求范围内有效,服务器跳转也视为一次新的请求。 9. **响应对象...

    JSP企业电子投票系统(源代码+论文+开题报告+外文翻译+文献综述).zip

    外文翻译可能是对相关领域的国外研究进行的中文解读,帮助开发者了解国际上的最新技术和趋势。文献综述则汇总了关于电子投票系统的相关研究,为项目提供了理论支持。 总的来说,《JSP企业电子投票系统》的实现涉及...

    Java_资料学习汇总(API)

    这份压缩包中主要包括了三个关键文件:`Jsp帮助文档.chm`、`Jsp精华文章.chm`以及`JAVA中文_API.CHM`,这些都是Java开发者在学习和工作中不可或缺的工具。 `Jsp帮助文档.chm`是关于JavaServer Pages(JSP)的技术...

    中文乱码处理汇总.docx

    对于JSP和JDBC的MySQL乱码问题,JSP的默认请求编码是ISO8859_1,处理中文时需要将其转换为GBK。示例代码如下: ```java String str = new String(request.getParameter("name").getBytes("ISO8859-1"), "GBK"); out...

    答辩常见问题汇总1.pdf

    本文将对答辩常见问题进行总结,涵盖数据库连接、系统测试、前端技术、Web应用配置、编程语言、架构设计、开发工具等多个方面,旨在帮助理解这些关键概念。 1. 数据库连接:通常通过JDBC_ODBC桥接器来连接数据库。...

    Java 相关学习必备各类文档打包总汇

    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精华...

    ajax乱码解决汇总

    GBK和GB2312都是针对中文的编码,但GBK的字符集比GB2312大,包含了更多的汉字和符号。因此,误用GB2312编码可能会导致部分字符无法正确显示。 使用Cookie传递数据虽然方便,但也存在一些问题。一是Cookie的大小有限...

    收集的常见的专业问题解决办法.rar

    2009-03-20 16:37 254350 86752 常见的专业问题解决办法\解决Struts中ApplicationResources_properties文件不支持中文问题_微科工作室 QQ:28790953____.mht 2009-02-25 08:45 文件夹 文件夹 常见的专业问题解决办法...

    jsp17教师工作量管理系统(jsp+servlet+mysql)-csdn.rar

    教师业绩管理系统将改变以往个人填报和单位审核的流程关系,由系统生成教师的真实工作业绩,学年末只需做简单的统计汇总,所需报表系统就会生成。教师业绩管理系统的基本功能:用户注册管理、 业绩项目管理、 指标...

    解决jfreechart中文乱码方案整理.doc

    因此,针对JFreeChart中的中文乱码问题,本文将汇总并整理一系列有效的解决方案。 #### JFreeChart简介 JFreeChart是一款开源Java图表库,它提供了丰富的API来创建高质量的图表。JFreeChart支持多种类型的图表,...

    java web 开发乱码汇总

    当使用Ajax发送请求时,JavaScript默认使用ISO-8859-1编码,因此需要对包含中文的参数进行编码。一种常见做法是在发送请求前使用`encodeURI()`或`encodeURIComponent()`方法对参数进行编码,例如`var url = ...

    部署汇总系统步骤111

    在配置 Tomcat 时,我们需要修改 server.xml 文件,添加 URIEncoding="UTF-8" 配置,以便解决中文乱码问题。同时,我们还需要添加一个 init 参数,用于指定文件编码。 5. 启动服务 启动服务时,我们需要先启动 ...

Global site tag (gtag.js) - Google Analytics