频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

如何分析Tomcat下中文的彻底解决

来源:赛迪网 作者:duduwjf 出处:巧巧读书 2008-03-06 进入讨论组
上一页 1 2 
访问地址 http://www.qqread.com/java/2008/03/s400062.html

 (四)JSP页面上有中文,按钮上面也有中文,但是通过服务器查看页面的时候出现乱码:

解决的办法是:

首先在JSP文件中不应该直接包含本地化的消息文本,而是应该通过< bean:message>标签从Resource Bundle中获得文本。应该把你的中文文本放到Application.properties文件中,这个文件放在WEB-INF/classes/*下,例如我在页面里有姓名,年龄两个label,我首先就是要建一个Application.properties,里面的内容应该是name="姓名" age="年龄",然后我把这个文件放到WEB-INF/classes/properties/下,接下来根据Application.properties文件,对他进行编码转化,创建一个中文资源文件,假定名字是Application_cn.properties。

在JDK中提供了native2ascii命令,他能够实现字符编码的转换。在DOS环境中找到你放置Application.properties的这个文件的目录,在DOS环境中执行一下命令,将生成按GBK编码的中文资源文件Application_cn.properties:native2ascii ?encoding gbk Application.properties Application_cn.properties执行以上命令以后将生成如下内容的Application_cn.properties文件:name=\u59d3\u540d age=\u5e74\u9f84,在Struts-config.xml中配置

< message-resources parameter="properties.Application_cn"/>

到这一步,基本上完成了一大半,接着你就要在JSP页面上写:

< %@ page language="java" contentType="text/html;charset=GBK" %>

到名字的那个label上写:

< bean:message key=”name”>

这样,在页面上出现的时候就会出现中文的姓名,年龄这个也是一样,按钮上汉字的处理也是同样的。

 (五)写入到数据库是乱码:

解决的方法:要配置一个filter,也就是一个Servelet的过滤器,代码如同第二种时候一样。

如果你是通过JDBC直接链接数据库的时候,配置的代码如下:

jdbc:mysql://localhost:3306/workshopdb?
useUnicode=true&characterEncoding=GBK

这样保证到数据库中的代码是不是乱码。

如果你是通过数据源链接的话你不能按照这样的写法了,首先你就要写在配置文件中,在tomcat 5.0.19中配置数据源的地方是在C:\Tomcat 5.0\conf\Catalina\localhost这个下面,我建立的工程是workshop,放置的目录是webapp下面,workshop.xml的配置文件如下:

< !-- insert this Context element into server.xml -->

< Context path="/workshop" docBase="workshop" debug="0"
reloadable="true" >

< Resource name="jdbc/WorkshopDB"
auth="Container"
type="javax.sql.DataSource" />

< ResourceParams name="jdbc/WorkshopDB">
< parameter>
< name>factory< /name>
< value>org.apache.commons.dbcp.BasicDataSourceFactory< /value>
< /parameter>
< parameter>
< name>maxActive< /name>
< value>100< /value>
< /parameter>
< parameter>
< name>maxIdle< /name>
< value>30< /value>
< /parameter>


< parameter>
< name>maxWait< /name>
< value>10000< /value>
< /parameter>

< parameter>
< name>username< /name>
< value>root< /value>
< /parameter>
< parameter>
< name>password< /name>
< value>< /value>
< /parameter>

< !-- Class name for mm.mysql JDBC driver -->
< parameter>
< name>driverClassName< /name>
< value>com.mysql.jdbc.Driver< /value>
< /parameter>
< parameter>
< name>url< /name>
< value>< ![CDATA[jdbc:mysql://localhost:3306/workshopdb?
useUnicode=true&characterEncoding=GBK]]>< /value>
< /parameter>
< /ResourceParams>

< /Context>


粗体地方要特别的注意,和JDBC直接链接的时候是有区别的,如果你配置正确,当你输入中文的时候到数据库中就是中文了,有一点要注意的是,你在显示数据的页面也是要用< %@ page language="java" contentType="text/html;charset=GBK" %>这行代码的。

需要注意的是有的前台的人员在写代码的时候,是用Dreamver写的,写了一个Form的时候把他改成了一个jsp,这样有一个地方要注意了,那就是在Dreamver中Action的提交方式是request的,你需要把他改过来,因为在jsp的提交的过程中仅仅就是POST和GET两种方式,但是这两种方式提交的代码在编码方面还是有很大不同的。

以上就是我在开发系统中解决中文的问题,不知道能不能解决大家的问题,时间匆忙,没有及时完善,文笔也不是很好,有些地方估计是词不达意。大家可以给我意见,希望能共同进步。

进入讨论组讨论。
上一页 1 2 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章