﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-ＪａｖａＥＥ神话-文章分类-Struts1</title><link>http://www.blogjava.net/minhailee/category/41933.html</link><description>------只想使用0-9、a-z、_、$编织心中美丽ＪａｖａＥＥ神话</description><language>zh-cn</language><lastBuildDate>Sun, 04 Oct 2009 20:52:59 GMT</lastBuildDate><pubDate>Sun, 04 Oct 2009 20:52:59 GMT</pubDate><ttl>60</ttl><item><title>struts1处理中文乱码问题总结</title><link>http://www.blogjava.net/minhailee/articles/297095.html</link><dc:creator>北欧神话</dc:creator><author>北欧神话</author><pubDate>Thu, 01 Oct 2009 15:35:00 GMT</pubDate><guid>http://www.blogjava.net/minhailee/articles/297095.html</guid><wfw:comment>http://www.blogjava.net/minhailee/comments/297095.html</wfw:comment><comments>http://www.blogjava.net/minhailee/articles/297095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/minhailee/comments/commentRss/297095.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/minhailee/services/trackbacks/297095.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 学了很久的java，接触SSH也有一段时间了，写成博文总是有点懒，最近在整理一些思绪，把SSH一点一滴放进博客里，以备以后改进，再学习。 <br />
<br />
以我自己的了解，在进行struts开发的过程中，总也是出现很多的乱码问题 ，但归根到底，也只是以下三种情况： <br />
<br />
<strong>㈠页面显示中文乱码 <br />
<br />
㈡传递参数中文乱码 <br />
<br />
㈢国际化资源文件乱码</strong> <br />
<br />
下面就这三中情况介绍怎么在具体项目中处理这些乱码问题。而对于整体的处理思想，是要统一编码为: UTF-8.(以myeclipse6支持的struts1.3为准) <br />
<br />
<strong>㈠页面显示中文乱码</strong> <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于在页面中显示出现乱码，这个问题比较简单，便是检查你的JSP文件里是不是出现了中文要处理，因为JSP默认的编码格式为&#8220;ISO-8859-1&#8221;，当JSP中出现要处理的中文时，其显示就出现乱码了，这种情况一般出现在手写JSP，或修改时。因为在myeclipse6.0中，如果出现了编码错误时，程序不会让你保存，而是会提示你注意编码，这点很好。具体的修改办法是把 <br />
<br />
<pre class="html" style="display: none" name="code">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">%.@&nbsp;page&nbsp;</span><span style="color: #ff0000">language</span><span style="color: #0000ff">="java"</span><span style="color: #ff0000">&nbsp;import</span><span style="color: #0000ff">="java.util."</span><span style="color: #ff0000">&nbsp;pageEncoding</span><span style="color: #0000ff">="ISO-8859-1"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</pre>
改成：
<pre class="html" style="display: none" name="code">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">%.@&nbsp;page&nbsp;</span><span style="color: #ff0000">language</span><span style="color: #0000ff">="java"</span><span style="color: #ff0000">&nbsp;import</span><span style="color: #0000ff">="java.util."</span><span style="color: #ff0000">&nbsp;pageEncoding</span><span style="color: #0000ff">="UTF-8"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;</span></div>
</pre>
<strong>㈡传递参数中文乱码</strong> <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 传递参数出现的乱码，参数的内容为中文。比如在struts应用中，简单的一个登录界面中，需要传递的登录名为中文时，你没经处理之前，是会出现乱码传递的，为了让我们能看到显示的乱码，我们在对应的Action类的子类里，修改一下，用System.out把接受到的参数输出，代码如下： <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ActionForward&nbsp;execute(ActionMapping&nbsp;mapping,&nbsp;ActionForm&nbsp;form,&nbsp;HttpServletRequest&nbsp;request,<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_138_570_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_570_Open_Text.style.display='none'; Codehighlighter1_138_570_Closed_Image.style.display='inline'; Codehighlighter1_138_570_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_138_570_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_138_570_Closed_Text.style.display='none'; Codehighlighter1_138_570_Open_Image.style.display='inline'; Codehighlighter1_138_570_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletResponse&nbsp;response)&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_138_570_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_138_570_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;DynaActionForm&nbsp;loginForm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(DynaActionForm)&nbsp;form;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;username&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(String)&nbsp;loginForm.get(</span><span style="color: #000000">"</span><span style="color: #000000">username</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;password&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(String)&nbsp;loginForm.get(</span><span style="color: #000000">"</span><span style="color: #000000">password</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">username:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">username);<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">password:</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">password);<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_473_525_Open_Image" onclick="this.style.display='none'; Codehighlighter1_473_525_Open_Text.style.display='none'; Codehighlighter1_473_525_Closed_Image.style.display='inline'; Codehighlighter1_473_525_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_473_525_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_473_525_Closed_Text.style.display='none'; Codehighlighter1_473_525_Open_Image.style.display='inline'; Codehighlighter1_473_525_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(username.equals(</span><span style="color: #000000">"</span><span style="color: #000000">ivorytower</span><span style="color: #000000">"</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;password.equals(</span><span style="color: #000000">"</span><span style="color: #000000">123456</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_473_525_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_473_525_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mapping.findForward(</span><span style="color: #000000">"</span><span style="color: #000000">success</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;mapping.findForward(</span><span style="color: #000000">"</span><span style="color: #000000">fail</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<br />
<br />
那么当你提交了中文输入后就会出现乱码了。 <br />
<br />
具体的解决方法： <br />
<br />
①修改Tomcat----&gt;conf-----&gt;server.xml文件，在修改端口的标签后面加一行代码，如下：&nbsp;<span>&nbsp;</span></span>
<pre class="xml" style="display: none" name="code">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">Connector&nbsp;</span><span style="color: #ff0000">port</span><span style="color: #0000ff">="8080"</span><span style="color: #ff0000">&nbsp;protocol</span><span style="color: #0000ff">="HTTP/1.1"</span><span style="color: #ff0000">&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #ff0000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionTimeout</span><span style="color: #0000ff">="20000"</span><span style="color: #ff0000">&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #ff0000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirectPort</span><span style="color: #0000ff">="8443"</span><span style="color: #ff0000">&nbsp;&nbsp;URIEncoding</span><span style="color: #0000ff">="UTF-8"</span><span style="color: #0000ff">/&gt;</span></div>
</pre>
<br />
②编写过滤器Filter
<pre class="java" style="display: none" name="code">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.Filter;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterChain;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterConfig;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletRequest;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletResponse;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img id="Codehighlighter1_303_685_Open_Image" onclick="this.style.display='none'; Codehighlighter1_303_685_Open_Text.style.display='none'; Codehighlighter1_303_685_Closed_Image.style.display='inline'; Codehighlighter1_303_685_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_303_685_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_303_685_Closed_Text.style.display='none'; Codehighlighter1_303_685_Open_Image.style.display='inline'; Codehighlighter1_303_685_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;CharacterEncodingFilter&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Filter&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_303_685_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_303_685_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_349_355_Open_Image" onclick="this.style.display='none'; Codehighlighter1_349_355_Open_Text.style.display='none'; Codehighlighter1_349_355_Closed_Image.style.display='inline'; Codehighlighter1_349_355_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_349_355_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_349_355_Closed_Text.style.display='none'; Codehighlighter1_349_355_Open_Image.style.display='inline'; Codehighlighter1_349_355_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;destroy()&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_349_355_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_349_355_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_504_592_Open_Image" onclick="this.style.display='none'; Codehighlighter1_504_592_Open_Text.style.display='none'; Codehighlighter1_504_592_Closed_Image.style.display='inline'; Codehighlighter1_504_592_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_504_592_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_504_592_Closed_Text.style.display='none'; Codehighlighter1_504_592_Open_Image.style.display='inline'; Codehighlighter1_504_592_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doFilter(ServletRequest&nbsp;request,&nbsp;ServletResponse&nbsp;response,&nbsp;FilterChain&nbsp;chain)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException,ServletException&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_504_592_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_504_592_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;request.setCharacterEncoding(</span><span style="color: #000000">"</span><span style="color: #000000">utf-8</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img id="Codehighlighter1_676_682_Open_Image" onclick="this.style.display='none'; Codehighlighter1_676_682_Open_Text.style.display='none'; Codehighlighter1_676_682_Closed_Image.style.display='inline'; Codehighlighter1_676_682_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_676_682_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_676_682_Closed_Text.style.display='none'; Codehighlighter1_676_682_Open_Image.style.display='inline'; Codehighlighter1_676_682_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(FilterConfig&nbsp;arg0)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_676_682_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_676_682_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</pre>
<br />
<br />
&nbsp; 利用过滤器，把requst传递的中文参数都设成&#8220;UTF-8&#8221;编码。 <br />
<br />
③修改web.xml文件 <br />
<br />
&nbsp;&nbsp;&nbsp; 打开项目里的web.xml文件，在前面加上如下代码： <br />
</span>
<pre class="xml" style="display: none" name="code">&nbsp;
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">characterEncoding</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">com.example.CharacterEncodingFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">characterEncoding</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</pre>
<br />
注意其过滤的URL为&#8220;/*&#8221;，表示当前的request请求。为了使设置生效，重起tomcat。 <br />
<br />
<strong>㈢国际化资源文件乱码</strong> <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; ①利用JDK的native2ascii工具进行编码转换 <br />
<br />
国际化问题，主要是为了处理文件在浏览器上的显示问题，还是以登录界面来说，比如在中文浏览器上，我们要看到中文显示，对应在英文浏览器上要显示英文。那么我们在登录那个界面处理上，就不能直接写上我们的&#8220;用户名&#8221;&#8220;密码&#8221;等标识了。就要用标记转换输出了，修改为：&nbsp;<br />
<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span>
<pre class="html" style="display: none" name="code">
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">bean:message&nbsp;</span><span style="color: #ff0000">key</span><span style="color: #0000ff">="example.login.username"</span><span style="color: #0000ff">/&gt;</span></div>
</pre>
<br />
&nbsp; 再者，打开项目下的资源配置文件ApplicationResources.properties，依据上面所写key值，设定成我们要的默认值（显示英文），比如 <br />
引用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">#Resource&nbsp;for&nbsp;Parameter&nbsp;'com.example.struts.ApplicationResources&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#Project&nbsp;webexample2&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />example.login.username=username&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />example.login.password=password&nbsp;</span></div>
<br />
现在我们动手新建一个资源文件,让其能显示中文，直接Ctrl+C，Ctrl+V。改名为ApplicationResources_zh.properties，代码如下： <br />
引用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">#Resource&nbsp;for&nbsp;Parameter&nbsp;'com.example.struts.ApplicationResources&nbsp;<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />#Project&nbsp;webexample2&nbsp;<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />example.login.username=用户名&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />example.login.password=密码</span></div>
<br />
但保存，myeclipse会报错，这时我们需要修改资源文件的编码格式。Windons----&gt;Preferences----&gt;Content Type------&gt;Text-----&gt;JavaPropertiesFile,把其Default encoding改为&#8220;utf-8&#8221;,按&#8220;update&#8221;更新。这样就能进行保存了。但是当我们进行验证会不是成功时，仍然给我们的是乱码。 <br />
<br />
不急，我们还得做一项任务，打开DOS窗口，CMD到资源文件所在目录，运用JDK的native2ascii工具把我们新建的资源文件改成另一个名字的资源文件，例如bank.properties。命令如下： <br />
引用&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&gt;native2ascii&nbsp;-encoding&nbsp;gbk&nbsp;ApplicationResources_zh.properties&nbsp;bank.properties&nbsp;</span></div>
<br />
<br />
打开bank.properties资源文件，自动生成的代码如下： <br />
引用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">#Generated&nbsp;by&nbsp;ResourceBundle&nbsp;Editor&nbsp;(http://eclipse-rbe.sourceforge.net)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />example.login.username&nbsp;=&nbsp;\u7528\u6237\u540D&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />example.login.password&nbsp;=&nbsp;\u5BC6\u7801&nbsp;</span></div>
<br />
然后在myeclipse窗口中，把原来新建ApplicationResources_zh.properties 删除，并把bank.properties改为ApplicationResources_zh.properties （为了方便记忆，管理）。然后重起tomcat或进行reload文件，我们发现乱码问题没有了。 <br />
<br />
②利用Eclipse ResourceBundle Editor插件工具 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以上我们是利用了JDK的native2ascii工具来处理国际化问题，但在EC中，还有一种更方便的工具专门用来处理编辑java的资源文件国际化乱码问题，即Eclipse ResourceBundle Editor插件工具。安装了这个插件后，我们能进行方便的可视化资源文件编辑。推荐。。 <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; 总结：其实，对于乱码，我在开发中很少遇到，我都是遵循着这样的原则：<br />
1、页面编码为UTF-8<br />
2、数据库编码为gb2312（MySQL）<br />
3、web容器编码为UTF-8<br />
4、使用过滤器统一过滤编码<br />
还需要注意的是使用struts1时，表单提交的方式要是POST。要不然有可能中文提交后在FF上就先被转化成系统默认编码之类去了&#8230;&#8230;
<img src ="http://www.blogjava.net/minhailee/aggbug/297095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/minhailee/" target="_blank">北欧神话</a> 2009-10-01 23:35 <a href="http://www.blogjava.net/minhailee/articles/297095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>