解决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> < ...
随机推荐
- oracle查询之null值转化
函数coalesce(c1,c2,c3......cn);返回第一个不为null的值
- js判断浏览器的环境(pc端,移动端,还是微信浏览器)
window.navigator.userAgent用来区分设备和浏览器 <!DOCTYPE html> <html> <head> <meta charse ...
- tinymce原装插件源码分析(五)-searchreplace
searchreplace 功能:查找和替换 代码注释见: https://www.xunhanliu.top/static/js/tinymce/plugins/searchreplace/plug ...
- tree 核心命令参数
常用参数: -a 显示所有文件 包括隐藏文件 -d 只显示目录 -f 显示每个文件的全路径 -i 不显示树枝 常与-f一起搭配 -L 显示的层数 -F 区分哪个文件是目录 [root@ftp:/va ...
- HTTP 文件共享服务器工具 - chfs
CuteHttpFileServer/chfs是一个免费的.HTTP协议的文件共享服务器,使用浏览器可以快速访问.它具有以下特点: 单个文件,整个软件只有一个可执行程序,无配置文件等其他文件 跨平台运 ...
- 配置 IntelliJ IDEA VM options
今天在使用maven build flex 项目的时候,build failure ,查看log后发现[ERROR] Java heap space. 原来是内存不够了.需要修改maven的运行时内存 ...
- [MST] Test mobx-state-tree Models by Recording Snapshots or Patches
Testing models is straightforward. Especially because MST provides powerful tools to track exactly h ...
- 数据结构之---C语言实现拓扑排序AOV图
//有向图的拓扑排序 //杨鑫 #include <stdio.h> #include <stdlib.h> #include <string.h> #define ...
- POJ1502 MPI Maelstrom Dijkstra
题意 给出图,从点1出发,求到最后一个点的时间. 思路 单源最短路,没什么好说的.注意读入的时候的技巧. 代码 #include <cstdio> #include <cstring ...
- GridView中使用CheckBox
asp.net中checkbox是向server提交时才干触发事件 把该控件的autopostback设置为true.才干响应事件 protected void Checkbox_CheckedCh ...