解决Struts中文乱码问题总结
在进行struts开发的过程中。总也是出现非常多的乱码问题。但归根究竟,也仅仅是下面三种情况:
㈠页面显示中文乱码
㈡传递參数中文乱码
㈢国际化资源文件乱码
以下就这三中情况介绍怎么在详细项目中处理这些乱码问题。
而对于总体的处理思想。是要统一编码为: UTF-8.(以myeclipse6支持的struts1.3为准)
㈠页面显示中文乱码
对于在页面中显示出现乱码,这个问题比較简单,便是检查你的JSP文件中是不是出现了中文要处理。由于JSP默认的编码格式为“ISO-8859-1”。当JSP中出现要处理的中文时。其显示就出现乱码了,这样的情况一般出如今手写JSP,或改动时。由于在myeclipse6.0中,假设出现了编码错误时,程序不会让你保存,而是会提示你注意编码,这点非常好。
详细的改动办法是把
Html代码
- <%.@ page language="java" import="java.util." pageEncoding="ISO-8859-1">
改成:
Html代码
- <%.@ page language="java" import="java.util." pageEncoding="UTF-8">
㈡传递參数中文乱码
传递參数出现的乱码,參数的内容为中文。比方在struts应用中,简单的一个登录界面中。须要传递的登录名为中文时,你没经处理之前,是会出现乱码传递的。为了让我们能看到显示的乱码,我们在相应的Action类的子类里,改动一下。用System.out把接受到的參数输出,代码例如以下:
Java代码
- public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
- HttpServletResponse response) ...{
- DynaActionForm loginForm = (DynaActionForm) form;
- String username = (String) loginForm.get("username");
- String password = (String) loginForm.get("password");
- System.out.println("username:"+username);
- System.out.println("password:"+password);
- if (username.equals("ivorytower") && password.equals("123456")) ...{
- return mapping.findForward("success");
- }
- return mapping.findForward("fail");
- }
那么当你提交了中文输入后就会出现乱码了。
详细的解决方法:
①改动Tomcat---->conf----->server.xml文件,在改动port的标签后面加一行代码。例如以下:
Xml代码
- port="8080" protocol="HTTP/1.1"
- connectionTimeout="20000"
- redirectPort="8443" URIEncoding="UTF-8"/>
②编写过滤器Filter
Java代码
- import java.io.IOException;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- public class CharacterEncodingFilter implements Filter ...{
- @Override
- public void destroy() ...{
- }
- @Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
- request.setCharacterEncoding("utf-8");
- chain.doFilter(request, response);
- }
- @Override
- public void init(FilterConfig arg0) throws ServletException {
- }
- }
利用过滤器,把request传递的中文參数都设成“UTF-8”编码。
③改动web.xml文件
打开项目里的web.xml文件,在前面加上例如以下代码:
Xml代码
- characterEncoding
- com.v512.example.CharacterEncodingFilter
- characterEncoding
- /*
注意其过滤的URL为“/*”,表示当前的request请求。
为了使设置生效,重起tomcat。
㈢国际化资源文件乱码
①利用JDK的native2ascii工具进行编码转换
国际化问题。主要是为了处理文件在浏览器上的显示问题。还是以登录界面来说,比方在中文浏览器上,我们要看到中文显示,相应在英文浏览器上要显示英文。那么我们在登录那个界面处理上,就不能直接写上我们的“username”“password”等标识了。就要用标记转换输出了,改动为:
Html代码
- 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中文乱码问题总结的更多相关文章
- 解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/
解决Eclipse中文乱码 - 技术博客 - 51CTO技术博客 http://hsj69106.blog.51cto.com/1017401/595598/
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]
转载自:http://www.cnblogs.com/zhcncn/p/4032321.html 写在前面:解决gedit 在txt文件格式出现乱码的问题,在我自己的操作中是需要把系统设置成中文显示环 ...
- 解决TortoiseCVS中文乱码
解决TortoiseCVS中文乱码必备,解决方法: 第一:卸载和TortoiseCVS安装一起安装的CVSNT. 第二:安装本版本CVSNT. CVSNT下载地址:http://down.51cto. ...
- 如何解决PHP中文乱码问题
如何解决PHP中文乱码问题 一.解决HTML中中文乱码问题方法 1.在head标签里面加入UTF8编码(国际化编码):UTF-8是没有国家的编码,也就是独立于任何一种语言,任何语言都可以使用的. ...
- springMvc解决json中文乱码
springMvc解决json中文乱码 springMvc解决json中文乱码,springMvc中文乱码,spring中文乱码 >>>>>>>>> ...
- 解决URL中文乱码问题--对中文进行加密、解密处理
解决URL中文乱码问题--对中文进行加密.解密处理 情景:在资源调度中,首先用户需要选择工作目标,然后跟据选择的工作目标不同而选择不同的账号和代理ip.处理过程如下:点击选择账号,在js中获取工作目标 ...
- request.getParameter()及解决数据库中文乱码问题——实习第七天
今天老师让我们自己做一个小项目,我开始着手于实现这个小项目.途中遇到过几个小问题,在此做个小记录, 相信后期还是会借鉴的. 1,从前台传入数据给后台传入数据,并没有传入成功: 输出的为Null. 当然 ...
- Hession集成Spring + maven依赖通讯comm项目 + 解决@ResponseBody中文乱码
hessian结合spring的demo hessian的maven依赖: <!-- hessian --> <dependency> < ...
随机推荐
- 洛谷 P3203 [HNOI2010]弹飞绵羊 分块
我们只需将序列分成 n\sqrt{n}n 块,对于每一个点维护一个 val[i]val[i]val[i],to[i]to[i]to[i],分别代表该点跳到下一个块所需要的代价以及会跳到的节点编号.在 ...
- 前端之JavaScript概述
ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国 ...
- Centos6.6 系统优化
1:最小化安装 2:修改网卡 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0HWADDR=52:54:00:0e:c2:c3TYPE ...
- 紫书 例题8-4 UVa 11134(问题分解 + 贪心)
这道题目可以把问题分解, 因为x坐标和y坐标的答案之间没有联系, 所以可以单独求两个坐标的答案 我一开始想的是按照左区间从小到大, 相同的时候从右区间从小到大排序, 然后WA 去uDebug找了数据 ...
- 嵌入式表单字段中的内容可能被server更改以删除不安全的内容。是否要又一次载入您的页面以查看保存结果?
嵌入式表单字段中的内容可能被server更改以删除不安全的内容.是否要又一次载入您的页面以查看保存结果? 近期有朋友问到,当他在SharePoint首页上进行编辑时.插入一段代码. 完 ...
- 2.Maven特点,Maven约定,建立第一个Maven项目
1 Maven是跨平台的项目管理工具.主要服务于基于java平台的项目构建,依赖管理和项目信息管理. 项目构建 清理à编译à測试à报告à打包à部署 理想的项目构建: 高度自己主动化 跨平台 可重 ...
- JS在页面限制checkbox最大复选数
应该是挺简单的代码, 记录一下分享. 首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下: <!DOCTYPE h ...
- 4、python序列对比
1.列表:[ ],杂(什么都可以放进去),有序,可变 2.元组:(),有序,不可变 3.字典:{ },键值对,无序,可变 4.集合:{ },不可重复,无序,可变
- BZOJ1468: Tree & BZOJ3365: [Usaco2004 Feb]Distance Statistics 路程统计
[传送门:BZOJ1468&BZOJ3365] 简要题意: 给出一棵n个点的树,和每条边的边权,求出有多少个点对的距离<=k 题解: 点分治模板题 点分治的主要步骤: 1.首先选取一个点 ...
- win7 一个电脑接入多个显示器
Display 在第一个选项display,选中某一个屏幕的时候 如果被选中的屏幕已经是main display,那么下方会显示this is your currently main display ...