解决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> < ...
随机推荐
- 联想lenovo 家用电脑安装win7 无法引导问题(新电脑安装系统时提示File:\Boot\BCD错误解决方案)
安装方式 : 1.进入 PE 2.用 EasyimageX 恢复 GHO镜像 3.重启后出现 原因: 主要 是安装win7 时,格式 化选择为GUID模式. 处理: win7 以后,格式华时选择MB ...
- 【BZOJ4071】【APIO2015】巴邻旁之桥
题意: Description 一条东西走向的穆西河将巴邻旁市一分为二,分割成了区域 A 和区域 B. 每一块区域沿着河岸都建了恰好 1000000001 栋的建筑,每条岸边的建筑都从 0 编号到 1 ...
- vue项目的webpack4.X配置
这两天摆弄webpack,躺过很多坑,直到今天看了一位博主的文章才得以解决.他对配置中的各个部分做说明. 下面的配置99.9%抄自博主: https://www.cnblogs.com/nianyif ...
- HDU-2896 病毒侵袭 字符串问题 AC自动机
题目链接:https://cn.vjudge.net/problem/HDU-2896 题意 中文题 给一些关键词和一个字符串,问字符串里包括了那几种关键词 思路 直接套模版 改insert方法,维护 ...
- Windows下安装Linux虚拟机的用途和好处
Windows一般是办公界面,主要做代码编辑查看,资料查找,还有发邮件,也可以用Windows下的其他的有用软件,Linux主要作为编译工具,基本上开发都是在Linux平台下编译,例如编译驱动就需要在 ...
- Redis介绍以及安装具体解释
redis是一个key-value存储系统. 和Memcached类似.它支持存储的value类型相对很多其它,包含string(字符串).list(链表).set(集合).zset(sorted s ...
- hadoop-02-关闭防火墙
hadoop-02-关闭防火墙 su root service iptables status #查看状态 即时关闭: service iptables stop #关闭 重启之后关闭: chkcon ...
- Hdoj 1176 免费馅饼 【动态规划】
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- linux系统调用表(system call table)
系统调用号 函数名 入口点 源码 0 read sys_read fs/read_write.c 1 write sys_write fs/read_write.c 2 open sys_open f ...
- 整合大量开源库项目(五)跳动的TextView JumpingBeans,良好体验的滚动条ConvenientBanner
转载请注明出处:王亟亟的大牛之路 时间过得非常快,这一系列已经写了第五篇了(感觉还要写好久).今天又引入了2个非常好用的库JumpingBeans,ConvenientBanner.首先.先看一下效果 ...