首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > 又谈乱码问题解决
【标  题】:又谈乱码问题解决
【关键字】:
【来  源】:http://www.blogjava.net/richardeee/archive/2007/01/23/chinese_encoding_problem_for_all.html

又谈乱码问题解决

有人说,乱码问题一直跟中国的程序员特别有缘,真是再同意不过了,不管是Struts,JSF,JSP,还是MySQL,Tomcat,全都或多或少有乱码的问题。
一般的做法有用Filter:

< filter >
????
< filter-name > Set?Character?Encoding </ filter-name >
????
< filter-class > org.springframework.web.filter.CharacterEncodingFilter </ filter-class >
????
< init-param >
??????
< param-name > encoding </ param-name >
??????
< param-value > GBK </ param-value >
????
</ init-param >
????
< init-param >
??????
< param-name > ignore </ param-name >
??????
< param-value > true </ param-value >
????
</ init-param >
??
</ filter >
??
< filter-mapping >
????
< filter-name > Set?Character?Encoding </ filter-name >
????
< url-pattern > *.do </ url-pattern >
??
</ filter-mapping >
??
< filter-mapping >
????
< filter-name > Set?Character?Encoding </ filter-name >
????
< url-pattern > *.jsp </ url-pattern >
??
</ filter-mapping >
??
< filter-mapping >
????
< filter-name > Set?Character?Encoding </ filter-name >
????
< url-pattern > *.html </ url-pattern >
??
</ filter-mapping >
??
< filter-mapping >
????
< filter-name > Set?Character?Encoding </ filter-name >
????
< url-pattern > *.htm </ url-pattern >
??
</ filter-mapping >


的,有用

<% request.setCharacterEncoding( " GBK " ); %>

的,还有用

<% @?page?contentType = " text/html;?charset=GBK " ?pageEncoding = " GBK " %>


的,还可以用

<% ?String?name? = ? new ?String(request.getParameter( " name " ).getBytes( " 8859_1 " ),? " GB2312 " );? %>


昨天就在做项目的过程中,发现用URL传request参数的时候,在第二个页面上得到乱码的问题。把上面几种方法都试了一下还是不行。仔细追踪了一下,发现在页面的源代码上中文是正常的,一直到URL还是中文正常,可是在后台的Action里面log出来就成了乱码了,于是猜想是在request封装的过程中把中文变成乱码了,以致于后台直接就是取到的乱码。在后台Action中Set入中文,页面上正常显示,说明Struts的中文已经不存在问题。剩下的,应该就只有doGet和doPost方法的问题了。找了一下tomcat的配置文件,发现只要在server.xml中:

???? <!-- ?Define?a?non-SSL?HTTP/1.1?Connector?on?port?8080? -->
????
< Connector? port ="8080" ?maxHttpHeaderSize ="8192"
???????????????maxThreads
="150" ?minSpareThreads ="25" ?maxSpareThreads ="75"
???????????????enableLookups
="false" ?redirectPort ="8443" ?acceptCount ="100"
???????????????connectionTimeout
="20000" ?disableUploadTimeout ="true" />
????
<!-- ?Note?:?To?disable?connection?timeouts,?set?connectionTimeout?value
?????to?0?
-->

改为

???? <!-- ?Define?a?non-SSL?HTTP/1.1?Connector?on?port?8080? -->
????
< Connector? port ="8080" ?maxHttpHeaderSize ="8192"
???????????????maxThreads
="150" ?minSpareThreads ="25" ?maxSpareThreads ="75"
???????????????enableLookups
="false" ?redirectPort ="8443" ?acceptCount ="100"
???????????????connectionTimeout
="20000" ?disableUploadTimeout ="true" ?URIEncoding ="GBK" />
????
<!-- ?Note?:?To?disable?connection?timeouts,?set?connectionTimeout?value
?????to?0?
-->

就是加上URIEncoding="GBK"就万事大吉了。
至此,应该再困难的乱码问题都解决了吧。就是要在页面上、数据库中、request里、doGet、doPost方法里面都是中文!看你还有什么地方躲??

Enterprise Library 3.0体验(4):Validation Application Block与ASP.NET的集成:【上一篇】
Struts源码的切片学习( 二)-资源文件的初始化:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • 让JSP页面过期
  • 用2003做网站服务器后遇到的常见问题解决
  • 修改DS15工作站分辨率笔记
  • 做广告的价值
  • RedHat AS 4.0最新安装Oracle9204手记
  • asp.net 2.0中设定默认焦点按钮
  • 花屏故障轻松就排除
  • 如何升级至 Exchange Server 2003问题集
  • SQL Server应用程序中的高级SQL注入 下
  • Dissecting The Nutch Crawler - The "nutch" shell script
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.