在进行struts开发的过程中。总也是出现非常多的乱码问题。但归根究竟,也仅仅是下面三种情况: 



㈠页面显示中文乱码 



㈡传递參数中文乱码 



㈢国际化资源文件乱码
 



以下就这三中情况介绍怎么在详细项目中处理这些乱码问题。

而对于总体的处理思想。是要统一编码为: UTF-8.(以myeclipse6支持的struts1.3为准) 



㈠页面显示中文乱码 



      对于在页面中显示出现乱码,这个问题比較简单,便是检查你的JSP文件中是不是出现了中文要处理。由于JSP默认的编码格式为“ISO-8859-1”。当JSP中出现要处理的中文时。其显示就出现乱码了,这样的情况一般出如今手写JSP,或改动时。由于在myeclipse6.0中,假设出现了编码错误时,程序不会让你保存,而是会提示你注意编码,这点非常好。

详细的改动办法是把

Html代码

  1. <%.@ page language="java" import="java.util." pageEncoding="ISO-8859-1">

改成:

Html代码

  1. <%.@ page language="java" import="java.util." pageEncoding="UTF-8">

㈡传递參数中文乱码 



         传递參数出现的乱码,參数的内容为中文。比方在struts应用中,简单的一个登录界面中。须要传递的登录名为中文时,你没经处理之前,是会出现乱码传递的。为了让我们能看到显示的乱码,我们在相应的Action类的子类里,改动一下。用System.out把接受到的參数输出,代码例如以下:

Java代码

  1. public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
  2. HttpServletResponse response) ...{
  3. DynaActionForm loginForm = (DynaActionForm) form;
  4. String username = (String) loginForm.get("username");
  5. String password = (String) loginForm.get("password");
  6. System.out.println("username:"+username);
  7. System.out.println("password:"+password);
  8. if (username.equals("ivorytower") && password.equals("123456")) ...{
  9. return mapping.findForward("success");
  10. }
  11. return mapping.findForward("fail");
  12. }

那么当你提交了中文输入后就会出现乱码了。 



详细的解决方法: 



①改动Tomcat---->conf----->server.xml文件,在改动port的标签后面加一行代码。例如以下:

Xml代码

  1. port="8080" protocol="HTTP/1.1"
  2. connectionTimeout="20000"
  3. redirectPort="8443"  URIEncoding="UTF-8"/>

②编写过滤器Filter

Java代码

  1. import java.io.IOException;
  2. import javax.servlet.Filter;
  3. import javax.servlet.FilterChain;
  4. import javax.servlet.FilterConfig;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.ServletRequest;
  7. import javax.servlet.ServletResponse;
  8. public class CharacterEncodingFilter implements Filter ...{
  9. @Override
  10. public void destroy() ...{
  11. }
  12. @Override
  13. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException   {
  14. request.setCharacterEncoding("utf-8");
  15. chain.doFilter(request, response);
  16. }
  17. @Override
  18. public void init(FilterConfig arg0) throws ServletException {
  19. }
  20. }

利用过滤器,把request传递的中文參数都设成“UTF-8”编码。 



③改动web.xml文件 



    打开项目里的web.xml文件,在前面加上例如以下代码:

Xml代码

  1. characterEncoding
  2. com.v512.example.CharacterEncodingFilter
  3. characterEncoding
  4. /*

注意其过滤的URL为“/*”,表示当前的request请求。

为了使设置生效,重起tomcat。 



㈢国际化资源文件乱码 



     ①利用JDK的native2ascii工具进行编码转换 



国际化问题。主要是为了处理文件在浏览器上的显示问题。还是以登录界面来说,比方在中文浏览器上,我们要看到中文显示,相应在英文浏览器上要显示英文。那么我们在登录那个界面处理上,就不能直接写上我们的“username”“password”等标识了。就要用标记转换输出了,改动为:

Html代码

  1. key="example.login.username"/>

再者,打开项目下的资源配置文件ApplicationResources.properties。根据上面所写key值,设定成我们要的默认值(显示英文)。比方

引用

#Resource for Parameter 'com.v512.example.struts.ApplicationResources 

#Project webexample2 

example.login.username=username 

example.login.password=password

如今我们动手新建一个资源文件,让其能显示中文,直接Ctrl+C。Ctrl+V。改名为ApplicationResources_zh.properties,代码例如以下:

引用

#Resource for Parameter 'com.v512.example.struts.ApplicationResources 

#Project webexample2 

example.login.username=用户名 

example.login.password=密码

但保存,myeclipse会报错,这时我们须要改动资源文件的编码格式。Windons---->Preferences---->Content Type------>Text----->JavaPropertiesFile,把其Default encoding改为“utf-8”,按“update”更新。这样就能进行保存了。

可是当我们进行验证会不是成功时,仍然给我们的是乱码。 



不急。我们还得做一项任务。打开DOS窗体。CMD到资源文件所在文件夹,运用JDK的native2ascii工具把我们新建的资源文件改成还有一个名字的资源文件,比如bank.properties。

命令例如以下:

引用

>native2ascii -encoding gbk ApplicationResources_zh.properties bank.properties

打开bank.properties资源文件,自己主动生成的代码例如以下:

引用

#Generated by ResourceBundle Editor (http://eclipse-rbe.sourceforge.net) 



example.login.username = \u7528\u6237\u540D 

example.login.password = \u5BC6\u7801

然后在myeclipse窗体中,把原来新建ApplicationResources_zh.properties 删除,并把bank.properties改为ApplicationResources_zh.properties (为了方便记忆,管理)。

然后重起tomcat或进行reload文件,我们发现乱码问题没有了。 



②利用Eclipse ResourceBundle Editor插件工具 



      以上我们是利用了JDK的native2ascii工具来处理国际化问题,但在EC中,另一种更方便的工具专门用来处理编辑java的资源文件国际化乱码问题,即Eclipse ResourceBundle Editor插件工具。安装了这个插件后,我们能进行方便的可视化资源文件编辑。推荐。。

解决Struts中文乱码问题总结的更多相关文章

  1. 解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/

    解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客  http://hsj69106.blog.51cto.com/1017401/595598/

  2. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题

    1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...

  3. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]

    转载自:http://www.cnblogs.com/zhcncn/p/4032321.html 写在前面:解决gedit 在txt文件格式出现乱码的问题,在我自己的操作中是需要把系统设置成中文显示环 ...

  4. 解决TortoiseCVS中文乱码

    解决TortoiseCVS中文乱码必备,解决方法: 第一:卸载和TortoiseCVS安装一起安装的CVSNT. 第二:安装本版本CVSNT. CVSNT下载地址:http://down.51cto. ...

  5. 如何解决PHP中文乱码问题

    如何解决PHP中文乱码问题 一.解决HTML中中文乱码问题方法    1.在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的. ...

  6. springMvc解决json中文乱码

    springMvc解决json中文乱码 springMvc解决json中文乱码,springMvc中文乱码,spring中文乱码 >>>>>>>>> ...

  7. 解决URL中文乱码问题--对中文进行加密、解密处理

    解决URL中文乱码问题--对中文进行加密.解密处理 情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标 ...

  8. request.getParameter()及解决数据库中文乱码问题——实习第七天

    今天老师让我们自己做一个小项目,我开始着手于实现这个小项目.途中遇到过几个小问题,在此做个小记录, 相信后期还是会借鉴的. 1,从前台传入数据给后台传入数据,并没有传入成功: 输出的为Null. 当然 ...

  9. Hession集成Spring + maven依赖通讯comm项目 + 解决@ResponseBody中文乱码

    hessian结合spring的demo         hessian的maven依赖: <!-- hessian --> <dependency>         < ...

随机推荐

  1. SpringBoot学习笔记(1)----环境搭建与Hello World

    简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配 ...

  2. Python: 自定义类对象序列化为Json串

    之前已经实现了Python: Json串反序列化为自定义类对象,这次来实现了Json的序列化. 测试代码和结果如下: import Json.JsonTool class Score: math = ...

  3. Unity 制作安装程序和卸载程序

    1.最简单的方式通过winrar制作 但是做出来的页面好low的感觉 参考链接:https://www.cnblogs.com/fetty/p/5185913.html 2.通过inno制作安装程序: ...

  4. Java基础学习总结(7)——Object类

    一.Object类介绍 Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能 ...

  5. XCL-Chart柱形图的期望线/分界线

    周日在柱形图上加了两个小功能,当中之中的一个是加上了期望线/分界线,功能非常小,但我个人非常喜欢这个功能(好像之前也没看到别的图表库原生支持这个. ) 主要是加上这些小小的横线后,能非常明显的区分出数 ...

  6. 启用Database Vault

    步骤1:停止EM.监听.数据库 步骤2:启用Database Vault [oracle@single1 ~]$ cd $ORACLE_HOME/rdbms/lib [oracle@single1 l ...

  7. JConsole远程监控Tomcat7

    下面技术应用于最优质的水果的鲜果篮 一.设置服务端: 1.增加Listener到conf/server.xml <Listener className="org.apache.cata ...

  8. Android笔记——Activity中的数据传递案例(用户注冊)

    1.创建程序activity_main: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  9. 【LeetCode-面试算法经典-Java实现】【064-Minimum Path Sum(最小路径和)】

    [064-Minimum Path Sum(最小路径和)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a m x n grid filled with ...

  10. MongoDB Shell (mongo)

    https://docs.mongodb.com/getting-started/shell/client/ The mongo shell is an interactive JavaScript ...