CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

请问Struts+mysql的中文怎么怎么解决?

楼主AlexHwang(Alex)2004-04-05 12:45:35 在 Java / Web 开发 提问

<struts-config>  
      <data-sources>  
          <data-source>  
  <set-property   property="driverClass"   value="org.gjt.mm.mysql.Driver"   />  
  <set-property   property="url"   value="jdbc:mysql://localhost/mydb"   />  
  <set-property   property="maxCount"   value="5"   />  
  <set-property   property="minCount"   value="1"   />  
  <set-property   property="user"   value="user"   />  
  <set-property   property="password"   value="password"   />  
  </data-source>  
      </data-sources>  
   
  我在struts-config.xml中定义了上面的数据源,但是不能制定编码格式啊,然后我用Struts写的,取回来都是乱麻,用了常规的格式转换也没用。  
  我怀疑是数据库连接编码没有设置的缘故,请问怎么解决啊? 问题点数:0、回复次数:6Top

1 楼Agassiwy(阿加西)回复于 2004-04-05 13:00:00 得分 0

用通常的getByte方法啊,或者使用过滤器,应该有个通常的对策的,这个问题是最基本的。Top

2 楼AlexHwang(Alex)回复于 2004-04-05 13:10:17 得分 0

能用的都用过了,还是没用阿Top

3 楼lhbf(牧野)回复于 2004-04-05 20:55:14 得分 0

如果取回来转换都没有用,多半是插入时已经是乱码了,要在插入前转换。  
  我觉得使用filter倒是个一劳永逸的事情。  
  Top

4 楼zj2977(大地)回复于 2004-04-05 21:50:55 得分 0

不要用转码,我现在用mysql根本没有中文乱码问题  
  jdbc:mysql://localhost/experiment?user=root&password=password&useUnicode=true&characterEncoding=gb2312  
  <%   request.setCharacterEncoding("gb2312");   %>  
  <%@   page   contentType="text/html;   charset=gb2312"   language="java"   import="java.sql.*"   errorPage=""   %>  
  Top

5 楼AlexHwang(Alex)回复于 2004-04-05 22:59:46 得分 0

大地:  
  我要用struts的数据库连接池阿  
  你那样做肯定没有问题的Top

6 楼kui(kui)回复于 2004-04-07 02:21:27 得分 0

JSPStudio中完全自动解决Struts中文显示问题:  
   
      (1)JSP页面中文显示问题:  
          新建JSP文件时,自己加入如下代码:  
  <%@   page   contentType="text/html;charset=GB2312"   %>  
  这样JSP页面上的中文就可以正常显示了。  
   
      (2)中文资源显示问题:  
      在JSPStudio中,默认的中文资源文件名是“ApplicationResources_ch.properties”,用户先将中文资源定入文件“ApplicationResources.properties”  
  然后选择工具条的“资源文件编码转换”键或选择“运行”菜单上的“资源文件编码转换”项,即可实现编码转换功能。  
   
      (3)表单和数据库中文显示问题:  
      在JSPStudio中建立Struts项目时,自动加入了编码转换设置过滤器。  
   
      可见在JSPStudio中,不需编程人员编写任何代码,仅仅点击一个资源文件编码转换键即可完全解决Struts中文显示问题。  
  ------------------------------------------------------------------------------------------  
  有人这样写:  
  数据库操作支持中文一直让我比较头痛,但是感谢善解人衣向我推荐了www.chinaxp.org,这个网站是用struts框架开发的,而且  
  开放源码,下载了源码后发现它的中文处理得很好,阅读部分源码,没有发现什么特殊的字符集转换,很纳闷,偶然看到楼上网友  
  留言知道原来servlet可以统一设置字符转换。chinaxp.org就是这么做的。  
  在web.xml中加上  
  <filter>  
  <filter-name>Set   Character   Encoding</filter-name>  
  <filter-class>com.huahang.tj.struts.filters.SetCharacterEncodingFilter</filter-class>  
  <init-param>  
  <param-name>encoding</param-name>  
  <param-value>GB2312</param-value>  
  </init-param>  
  <init-param>  
  <param-name>ignore</param-name>  
  <param-value>true</param-value>  
  </init-param>  
  </filter>  
  <filter-mapping>  
  <filter-name>Set   Character   Encoding</filter-name>  
  <servlet-name>action</servlet-name>  
  </filter-mapping>  
  这里会涉及一个bean,源码如下:  
  /*  
  *   XP   Forum  
  *  
  *   Copyright   2002-2003   RedSoft   Group.   All   rights   reserved.  
  *  
  */  
  package   com.huahang.tj.struts.filters;  
   
  import   javax.servlet.*;  
  import   java.io.IOException;  
   
  /**  
  *   <p>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:</p>  
  *   <ul>  
  *   <li><strong>encoding</strong>   -   The   character   encoding   to   be   configured  
  *   for   this   request,   either   conditionally   or   unconditionally   based   on  
  *   the   <code>ignore</code>   initialization   parameter.   This   parameter  
  *   is   required,   so   there   is   no   default.</li>  
  *   <li><strong>ignore</strong>   -   If   set   to   "true",   any   character   encoding  
  *   specified   by   the   client   is   ignored,   and   the   value   returned   by   the  
  *   <code>selectEncoding()</code>   method   is   set.   If   set   to   "false,  
  *   <code>selectEncoding()</code>   is   called   <strong>only</strong>   if   the  
  *   client   has   not   already   specified   an   encoding.   By   default,   this  
  *   parameter   is   set   to   "true".</li>  
  *   </ul>  
  *  
  *   <p>Although   this   filter   can   be   used   unchanged,   it   is   also   easy   to  
  *   subclass   it   and   make   the   <code>selectEncoding()</code>   method   more  
  *   intelligent   about   what   encoding   to   choose,   based   on   characteristics   of  
  *   the   incoming   request   (such   as   the   values   of   the   <code>Accept-Language</code>  
  *   and   <code>User-Agent</code>   headers,   or   a   value   stashed   in   the   current  
  *   user's   session.</p>  
  *  
  *   @author   <a   href="mailto:jwtronics@yahoo.com">John   Wong</a>  
  *  
  *   @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  
  *   <code>null</code>.  
  *   <p>  
  *   The   default   implementation   unconditionally   returns   the   value   configured  
  *   by   the   <strong>encoding</strong>   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中的中文问题,现在还没发现新的问题。  
   
  Top

相关问题

  • struts+mysql中文问题????????/
  • struts+hibernate+mysql+velocity中文问题
  • 怎么解决Struts的中文问题 ?
  • struts中读取资源文件,中文乱码怎么解决?
  • struts中文问题
  • 各位自己都是如何解决tomcat5+struts+mysql的中文问题的
  • mysql 中文?
  • struts国际化:浏览器表单提交中文,链接提交中文,全是乱码。怎么办啊?
  • apache+php+mysql+phpmyadmin中显示怎么中文?
  • mysql导入数据之后的中文是???,怎么解决?

关键词

  • 转换
  • 中文
  • 编码
  • struts
  • 解决
  • 数据库
  • 文件
  • 源码
  • mysql
  • encoding

得分解答快速导航

  • 帖主:AlexHwang

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo