网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Struts开发指南之MVC架构.
.通过XSLT访问Java代码.
.Spring的核心机制依赖注入简介.
.join 方法.
.总是要改写tostring().
.Java路径问题最终解决方案.
.关于EJB调用原理分析.
.用web_xml控制Web应用的行为(下).
.Java关键字new和newInstance的区.
.XDE中模式驱动的设计与开发(二).
.用AWT组件实现登录对话框.
.条件编译变量.
.Java的中文编程与配置心得.
.JavaSocket编程中的一个秘密类.
.Global 对象.
.分享:用Struts上传多个文件的方法.
.编写跨平台Java程序注意事项!.
.Java图形调试器 JSwat .
.增强ebXML的安全性2——内容攻击.
.Java中Decorate的三种实现方法.

我的百宝箱之tomcat5中文问题解决之道

发表日期:2008-1-5



问题描述:

1 表单提交的数据,用request.getParameter(“xxx”)返回的字符串为乱码或者??
2 直接通过url如http://localhost/a.jsp?name=中国,这样的get请求在服务端用request. getParameter(“name”)时返回的是乱码;按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用

原因:
1 tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理
2 tomcat对get方式提交的请求对query-string 处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding(“gbk”))不起作用。


解决办法:

1 实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.XML和SetCharacterEncodingFilter的配置。)

1)只要把%TOMCAT安装目录%/ webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的webapp目录/filters下,假如没有filters目录,就创建一个。
2)在你的web.xml里加入如下几行:

    <filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GBK</param-value>
        </init-param>
    </filter>
   
    <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

3)完成.

2 get方式的解决办法
1) 打开tomcat的server.xml文件,找到以下区块,加入如下一行:
URIEncoding=”GBK”
完整的应如下:

<Connector
port="80"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" redirectPort="8443" acceptCount="100"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true"
               URIEncoding="GBK"
/>


2)重启tomcat,一切OK。

执行如下jsp页页测试是否成功
<%@ page contentType="text/Html;charset=gb2312"%>
<%@ page import="Java.util.*"%>

<%   
    
     String q=request.getParameter("q");
     q = q == null? "没有值" : q;
                   
%>


<HTML>
<HEAD><TITLE>新闻列表显示</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=pragma content=no-cache>
<body>
你提交了:
<%=q%>
<br>
<form action="tcnchar.jsp" method="post">
输入中文:<input type="text" name="q"><input type="submit" value="确定">
<br>
<a href="tcnchar.jsp?q=中国">通过get方式提交</a>

</form>
</BODY>
</HTML>

测试结果假如你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!

非凡感谢下面这篇帖子,帮我解决了中文问题.最后祝大家好运!!!
参考网址:
http://www.javaworld.com.tw/jute/post/view?bid=9&id=44042&sty=1&tpg=1&age=0
一个具体的网址
http://www.zdnet.com.cn/developer/tech/story/0,2000081602,39175760,00.htm


上一篇:面向异步消息的WEB应用(AMOWA) 人气:728
下一篇:Jdom使用指南 人气:1115
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐