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 Encodingcom.huahang.tj.struts.filters.SetCharacterEncodingFilterencodingGB2312ignoretrueSet Character Encodingaction 这里会涉及一个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中的中文问题,现在还没发现新的问题。

"struts中文问题","struts国际化问题"——终极解决方案

引文--------------------------------------------------------------------------------说实话,你们的方法都做的复杂了,Ja...
  • feng_sundy
  • feng_sundy
  • 2004年10月17日 11:20
  • 19002

struts国际化实例---登录例子(中英文切换)

struts国际化实例---登录例子(中英文切换) 1、新建一个web工程struts-i18n2,添加struts2支持 2、在index.jsp页面中写一个form表单:(超链接转换中英文时,...
  • ZZ2713634772
  • ZZ2713634772
  • 2017年07月24日 11:15
  • 616

四、Struts2之国际化

一、国际化介绍   Struts2国际化的目的和Java国际化一致,对于浏览器支持的语言显示不同的文字,如果浏览器支持中文,则显示中文,如果浏览器支持英文,则显示英文; ...
  • xiazdong
  • xiazdong
  • 2012年01月27日 10:20
  • 7760

Struts2标签以及国际化

【参考资料】《java EE技术实验教程》 韩珊珊、王春平编著,清华大学出版社 这里action的有关内容不再赘述。 首先,做一个注册页面,一个注册失败的页面,一个注册成功的页面。注册页面...
  • u013063099
  • u013063099
  • 2017年03月16日 09:14
  • 672

Struts2 资源配置文件国际化详解

Struts2 资源配置文件国际化 Struts2资源文件的命名规范:basename_language_country.properties Struts2国际化 如果系统同时存在资源...
  • xyw591238
  • xyw591238
  • 2016年07月18日 17:00
  • 1408

struts标签+jstl标签之国际化实例

Struts提供了国际化的功能,对于一个面向各国的系统来说,是非常有帮助的。只需要提供每个国家的语言资源包,配置后即可使用。       下面来用一个登录实例来演示一下Struts的国际化配置和显...
  • xiaoxian8023
  • xiaoxian8023
  • 2013年09月18日 09:34
  • 4119

Struts2开发-i18n国际化实现案例-登录页面

 i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。 一般开发都是用Struts来实现国际化,这里用一个最经典的登录...
  • u012882327
  • u012882327
  • 2015年09月22日 11:51
  • 1112

struts2-多国语言国际化应用过程

转自:http://blog.sina.com.cn/s/blog_6608320c0100j4n1.html struts2-多国语言国际化应用过程: 1、新建三个.properties,分别为 ...
  • xuanjiewu
  • xuanjiewu
  • 2016年02月04日 23:44
  • 1469

struts2的国际化(即实现网站整体中英文切换)实例

环境要求:Struts2框架环境搭建成功 为了实现程序的国际化,必须先提供程序所需要的资源文件。资源文件的内容基本是key-value对,其中key是程序使用的部分,而value是程序的显示部分...
  • weixin_36380516
  • weixin_36380516
  • 2017年05月18日 21:19
  • 2405

Struts对国际化的支持

我们在很多网站中发现,他可以支持多种语言,比如谷歌,百度,还有这段时间学英语常用的italki,youtube等等,都可以由用户自定义该网站的语言,十分便捷,而且,我们要想让自己的软件走向国际化,实现...
  • laner0515
  • laner0515
  • 2013年09月19日 16:11
  • 3937
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:struts的国际化问题
举报原因:
原因补充:

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