问题描述
这里我使用的是struts2.0 Hibernate3.2 spring2.0 mysql5.0的配置,容器选择Tomcat6.0;下面我们使用的是get的方式提交form表单所出现的情况:前台页面使用:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ include file="../documentTabSideBar.jsp"%>...涉及的表单:<%@ include file="../title.jsp" %> 下面我先使用默认的get方式提交进行测试:<form action="addDocumentCatalog.action" id="submitInfo" name="submitInfo" onsubmit="return validate()">...<input name="title" type="text" size="40"><%@ include file="../documentTabSideBar.jsp"%>这个页面的头部设置:<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><html> <head><Meta http-equiv="progma" content="no-cache"><title></title><meta http-equiv="content-type" content="text/html; charset=UTF-8"><%@ include file="css/css_all.css" %>Action的代码:public class AddDocumentCatalog extends ActionSupport{...private String title;...@Overridepublic String execute() throws Exception{//这里我做了打印测试:System.out.println(title);...this.service.saveDocumentCatalog(bean);DAO层的实现:public class DocumentCatalogDAOImpl extends HibernateDaoSupport implements DocumentCatalogDAO{public void saveDocumentCatalog(DocumentCatalog bean){{//这里我做了打印测试:System.out.println(bean.getName());this.getHibernateTemplate().save(bean);}Spring ioc配置:<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url"value="jdbc:mysql://localhost:3306/langsinoa?useUnicode=true&characterEncoding=UTF-8"></property>...</bean>到浏览器进行测试:输入“中文”两个字:得到的请求url信息:http://localhost:8080/oa/DocumentCatalog/addDocumentCatalog.action?type=1&parentId=-1&choice=directory&title=%E4%B8%AD%E6%96%87&title2=&description=&address=这里的title就是乱码?得到的Console显示:???????????? //这里输出的测试结果!就是无法显示的!为什么?firebug截图:Hibernate: select max(id) from documentcatalogHibernate: insert into langsinoa.documentcatalog (name_, date_, flag_, authorId_, authorName_, type_, order_, content_, address_, parentId_, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)之后我将from的Method设置为post:其他设置不变,出现的状况:Console:中文中文Hibernate: insert into langsinoa.documentcatalog (name_, date_, flag_, authorId_, authorName_, type_, order_, content_, address_, parentId_, id) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)虽然得到了中文,但是回到db:mysql> select name_ from documentcatalog;+--------------------+| name_ |+--------------------+| one || 盲赂颅忙聳聡 || into! || 盲赂颅忙聳聡茂录聛 || 盲赂颅忙聳聡 || en || en || 涓枃 || 盲赂颅忙聳聡 || 盲赂颅忙聳聡 || 盲赂颅忙聳聡 || 涓枃 |+--------------------+12 rows in set (0.00 sec)还是乱码:db的编码设置方式:首先是表:| documentcatalog | CREATE TABLE `documentcatalog` ( `id` bigint(20) NOT NULL, `name_` varchar(50) default NULL,... PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 |下面是这个sb的default设置:mysql> show variables like '%char%';+--------------------------+------------------+| Variable_name | Value |+--------------------------+------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir | C:Program Fets |统一的是utf-8我实在是没法了! 请大家帮忙解决一下! 谢谢!谢谢! 问题补充:Wind_ZhongGang 写道
解决方案
1.Mysql查询显示正确中文使用如下命令: set names gbk 运行该命令后再查询2.使用Get请求,如果请求中包含中文在后端处理使用如下方法public static String decode(String encodeText) { if (!StringUtils.hasText(encodeText)) { return encodeText; } try { return URLDecoder.decode(encodeText, "UTF-8"); } catch (UnsupportedEncodingException e) { log.debug("Decode text [" + encodeText + "] error", e); return encodeText; } } 如果对该方法不满意可以参考URLDecoder类3.你所说的Link外部CSS文件,如果你使用了Spring 请检查你的配置文件,是否处理了这种情况
解决方案二:
首先数据库中存储中文时查询出来看是乱码 这没有问题 是可以正常显示的其次使用Get请求提交的数据包含中文是要出现乱码的,除非你自己手动在后面解码,要么就使用Post请求