本站启用国内永久域名: www.LewenSky.cn,请大家使用新域名访问网站!
4月2

JSP中文乱码问题总结

| |
23:32其他编程  From: 网络

1.编码问题:

(1)首先确定JSP页面头部是否有:<%@ page contentType="text/html; charset=GBK" %>

(2)类似这样的转码:

String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "GBK");

(3)添加filter字符过滤器,具体做法:


先添加类:


import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import org.apache.log4j.Logger;
import java.net.URLEncoder;

/** *//**
* 请求中中文字符串过滤类
*/


public class SetEncodingFilter
implements Filter ...{
private Logger logger=Logger.getLogger(this.getClass());

public void init(FilterConfig filterConfig) throws ServletException ...{
}


public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException ...{
logger.info(
"请求转码过滤器===================");
request.setCharacterEncoding(
"gb2312");
chain.doFilter(request,response);
}


public void destroy() ...{
}

}

再注册类到XML里:

<filter>
<filter-name>Set Encoding</filter-name>
<filter-class>SetEncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Set Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

(4)如果是通过"a.jsp?param=中文"传递参数,则需要:
a.在传参数之前先把参数进行转码:java.net.URLEncoder.encode(param);
取值用java.net.URLDncoder.dncode(param);再转回中文
b.在你的Tomcat目录-->conf目录-->server.xml里找出这段:

<Connector
port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups
="false" redirectPort="8443" acceptCount="100"
debug
="0" connectionTimeout="20000"
disableUploadTimeout
="true" <!--在里边加上这个参数-->URIEncoding="gb2312"
/>

(5)数据库乱码,首先确定你在插入数据库之前是中文,解决办法:

在数据库的数据库连接URL中加上useUnicode=true&characterEncoding=GBK就OK了。

如果在读取的时候出现乱码用第二种方法解决.




另外:

UTF8问题主要有 数据库取出或存入显示为乱码
我这个开发组这个项目中一个同事遇到 数据页面取出都是正常的.但是存入数据库的一刹那,变成 ???.数据库是MYSQL.解决办法是
不用担心,只要我们运行下面的这几行命令,就能看到正常的中文了!

SET character_set_client = gbk;
SET character_set_connection = gbk;
SET character_set_database = gbk;
SET character_set_results = gbk;
SET character_set_server = gbk;

SET collation_connection = gbk_bin;
SET collation_database = gbk_bin;
SET collation_server = gbk_bin;

如果你用的是mysql的命令行,则直接输入就好。
注意 比如UTF-8,在JAVA中要写成UTF-8,但在Mysql中要写成utf8

浏览器是不会不支持中文的.我们应该意识到这是TOMCAT服务器的问题.如果浏览器不支持中文文件名下载,那么为什么邮箱的附件能收发自如?
我们发现很多情况下我们想取 add.jsp?name=王生 这样的NAME值,我们用request.getParameter("name");是取不出来的.所以这可能是tomcat服务器不支持中文url

设置的方法是 在<Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443" maxSpareThreads="75" maxThreads="150" minSpareThreads="25" URIEncoding="UTF-8">设置URIEncoding="UTF-8"

在 <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443" URIEncoding="UTF-8"> 也设置.这样我们的中文URLK就支持了,能下载中文文件,在一般情况下不需要下载控件了.



出处:网络
转载时必须以链接形式注明出处及本声明!


最新日志 随机日志 综合排行
  • OFFICE 2010 VOL...
  • 格式工厂绿色版 V2.90
  • Password Invent...
  • VideoCacheView ...
  • 电脑店U盘启动盘制作工具 3....
  • 阿里旺旺AliIM2011_7...
  • 极点五笔十周年纪念版
  • PPTV网络电视3.1.1.0...
  • WinRAR注册方法
  • 紫光华宇拼音输入法 6.8.0...
  • 添加了两个BLOG插件
  • FileTypesMan 1....
  • Google Earth Pl...
  • Office2003 SP3 ...
  • LPCTSTR的用法!
  • 解决win7下分区(D盘、E盘...
  • WirelessNetView...
  • Uniture Memory ...
  • 诺基亚N95中文说明书
  • CurrPorts 1.91 ...
  • 安装软件时出现系统提示&quo...
  • XP与XP无线共享设置(笔记本...
  • ZineMaker目录模板大集...
  • 没有不可能 轻松实现PDG转P...
  • CString转char的方法...
  • [转]MSDN精简版、MSDN...
  • 将IE、FIREFOR (火狐...
  • VC多线程编程(转)
  • MyEclipse6.5下载地...
  • Diskeeper 2010 ...
  • Tags: ,
    阅读(2655) | 评论(20) | 引用(0)
    发表评论
    表情
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    emotemotemotemotemot
    打开HTML
    打开UBB
    打开表情
    隐藏
    记住我
    昵称   密码   游客无需密码
    网址   电邮   [注册]