struts的国际化问题

转载 2005年03月02日 10:44:00
一、 我在网上下载了一个 struts 结构的源程序,数据库是 MySQL,数据库里的字段只能输入一个汉字,超过的不显示。而且不能进行中文操作,页面显示乱码,我猜可能是建立连接时需要进行字符集的转换,这是一个外国人写的程序,我没找到到数据库连接的语句,不知如何是好,如果您肯帮助我,麻烦您把邮箱留一下,我 classes 发到您的邮箱里,请您帮我看一下应该怎样改?我万分感谢! 加一个转换中文的: package com.aurel.track.user; public class ToChinese { /** * 处理中文 * @param ss 待处理的字符串 * @return 处理之后的字符串 */ public String toChinese(String ss) { //处理中文问题 if (ss != null) { try { String temp_p = ss; byte[] temp_t = temp_p.getBytes("ISO8859-1"); ss = new String(temp_t); } catch (Exception e) { System.err.println("toChinese exception:" + e.getMessage()); System.err.println("The String is:" + ss); } } return ss; } } 在得到参数的时候,比如RegistrationForm 在RegistrationForm方法里面加上ToChinese mychinese = new ToChinese();,就像下面的一样: public final class RegistrationForm extends ActionForm { ToChinese mychinese = new ToChinese(); 得到参数时: public void setLoginName ( String loginName ) { this.loginName = mychinese.toChinese( loginName ); } } 就可以了,跟平常java的中文处理没什么两样 jdbc:mysql://127.0.0.1:3306/st?user=root&password=111111&useUnicode=true&characterEncoding=GBK struts中文的解决 转自 www.javaresearch.org 作者 fishandfly 1.使ApplicationResources.properties支持中文 建立一个ApplicationResources_ISO.properties文件,把应用程序用的message都写进去,然后在dos下执行这个命令, native2ascii -encoding gb2312 ApplicationResources_ISO.properties ApplicationResources.properties 这样就会将ISO编码的ApplicationResources转换成GB2312编码的格式了,同时保存到ApplicationResources.properties. native2ascii这个工具是jdk自带的一个东东,所以如果path都设定正确就可以直接运行了,你可以在$java_home$/bin下找到他。 转换后的中文类似于这个样子 iso 格式下 :tj.type=商品车类型 gb2312格式下 :tj.type=/u5546/u54c1/u8f66/u7c7b/u578b 然后在struts-config.xml中设置应用这个资源文件 开发jsp时在jsp的开头写上<%@ page contentType="text/html; charset=gb2312" %>,将字符集设置成gb2312就可以了。 2.使数据库操作支持中文。 数据库操作支持中文一直让我比较头痛,但是感谢善解人衣向我推荐了www.chinaxp.org,这个网站是用struts框架开发的,而且 开放源码,下载了源码后发现它的中文处理得很好,阅读部分源码,没有发现什么特殊的字符集转换,很纳闷,偶然看到楼上网友 留言知道原来servlet可以统一设置字符转换。chinaxp.org就是这么做的。 在web.xml中加上 Set Character Encoding com.huahang.tj.struts.filters.SetCharacterEncodingFilter encoding GB2312 ignore true Set Character Encoding action 这里会涉及一个bean,源码如下: /* * XP Forum * * Copyright 2002-2003 RedSoft Group. All rights reserved. * */ package com.huahang.tj.struts.filters; import javax.servlet.*; import java.io.IOException; /** *

Filter that sets the character encoding to be used in parsing the * incoming request, either unconditionally or only if the client did not * specify a character encoding. Configuration of this filter is based on * the following initialization parameters:

*
    *
  • encoding - The character encoding to be configured * for this request, either conditionally or unconditionally based on * the ignore initialization parameter. This parameter * is required, so there is no default.
  • *
  • ignore - If set to "true", any character encoding * specified by the client is ignored, and the value returned by the * selectEncoding() method is set. If set to "false, * selectEncoding() is called only if the * client has not already specified an encoding. By default, this * parameter is set to "true".
  • *
* *

Although this filter can be used unchanged, it is also easy to * subclass it and make the selectEncoding() method more * intelligent about what encoding to choose, based on characteristics of * the incoming request (such as the values of the Accept-Language * and User-Agent headers, or a value stashed in the current * user's session.

* * @author John Wong * * @version $Id: SetCharacterEncodingFilter.java,v 1.1 2002/04/10 13:59:27 johnwong Exp $ */ public class SetCharacterEncodingFilter implements Filter { // ----------------------------------------------------- Instance Variables /** * The default character encoding to set for requests that pass through * this filter. */ protected String encoding = null; /** * The filter configuration object we are associated with. If this value * is null, this filter instance is not currently configured. */ protected FilterConfig filterConfig = null; /** * Should a character encoding specified by the client be ignored? */ protected boolean ignore = true; // --------------------------------------------------------- Public Methods /** * Take this filter out of service. */ public void destroy() { this.encoding = null; this.filterConfig = null; } /** * Select and set (if specified) the character encoding to be used to * interpret request parameters for this request. * * @param request The servlet request we are processing * @param result The servlet response we are creating * @param chain The filter chain we are processing * * @exception IOException if an input/output error occurs * @exception ServletException if a servlet error occurs */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // Conditionally select and set the character encoding to be used if (ignore || (request.getCharacterEncoding() == null)) { String encoding = selectEncoding(request); if (encoding != null) request.setCharacterEncoding(encoding); } // Pass control on to the next filter chain.doFilter(request, response); } /** * Place this filter into service. * * @param filterConfig The filter configuration object */ public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); String value = filterConfig.getInitParameter("ignore"); if (value == null) this.ignore = true; else if (value.equalsIgnoreCase("true")) this.ignore = true; else if (value.equalsIgnoreCase("yes")) this.ignore = true; else this.ignore = false; } // ------------------------------------------------------ Protected Methods /** * Select an appropriate character encoding to be used, based on the * characteristics of the current request and/or filter initialization * parameters. If no character encoding should be set, return * null. *

* The default implementation unconditionally returns the value configured * by the encoding initialization parameter for this * filter. * * @param request The servlet request we are processing */ protected String selectEncoding(ServletRequest request) { return (this.encoding); } }//EOC 加上这个后,在action中就可以直接从form中接收gb2312编码的数据了,返回时自然也是gb2312了。 但是这个好像需要servlet 2.2以上的容器 综合上面的方法,我解决了struts中的中文问题,现在还没发现新的问题。

相关文章推荐

STRUTS2国际化的问题

  • 2009年02月05日 17:10
  • 14KB
  • 下载

struts国际化的问题

  • 2011年04月15日 07:39
  • 181KB
  • 下载

struts2 国际化问题解决

STRUTS 2 国际化并自定义切换语言的问题解决 在struts2配置文件struts.xml中添加好国际化拦截器,struts。properties中指定好资源文件后(这2步网上一搜一大把,就...

实战程序化处理Struts1针对zh_HANS_CN国际化问题

最近为了解决Windows 8中对中文locale的变化,引入了zh_HANS_CN的支持,原来已经支持中文的站点无法正常工作。 当然你可以增加一种资源文件来支持着新的locale,但是涉及到不同浏览...
  • lzy_168
  • lzy_168
  • 2014年08月08日 10:41
  • 2654

一口一口吃掉Struts(九)——国际化问题(1) .

Web应用实现国际化(i18n),主要包括两个方面  一、页面(jsp)静态信息的国际化 二、动态消息的国际化   在开始Struts国际化之前,我们先来看一下java如何实现国际化   ...

struts2国际化问题

struts.custom.i18n.resources     每种框价都会有国际化的支持,struts2的国际化大致上分为页面的国际化,Action的国际化以及xml的国际化 ...

struts2 i18n国际化问题

根据实验结果,做一个简单的总结: 一.action级别: 对应一个Action可以定义一个资源文件,可供这个action使用,例如HelloAction: public class HelloA...

解决了struts2国际化无法读取属性文件的问题

最根本的原因是没有弄清楚Action类是实现Action接口,还是继承ActionSupport类,一下是二者的区别:一看就明白了Struts 2的Action无须实现任何接口或继承任何类型,普通的P...

struts 国际化 中文编码问题

引文 作者 :robin 出自:java中文站 ---------------------------------------- ---------------------------------...

struts2上传类型、大小限制以及国际化的问题

(1)问题背景:在做struts2上传功能时会遇到上传的类型大小限制问题。 比如说此上传功能只可以上传图片文件(image/bmp,image/png,image/gif,image/pjpeg,i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts的国际化问题
举报原因:
原因补充:

(最多只允许输入30个字)