`
xgbjmxn
  • 浏览: 271694 次
  • 性别: Icon_minigender_1
  • 来自: 新乡
社区版块
存档分类
最新评论

ssh2 + mysql 数据入库乱码问题

阅读更多
ssh2 + mysql 数据入库乱码问题

数据库直接放入中文,显示正常。
通过web工程向数据库查询中文,页面显示正常。

通过web工程向数据库插入,修改中文,数据库内显示不正常。出现乱码【??】,页面反映出来的也是【??】问号乱码

我的工程整个接触到乱码解决的地方如下:
--------------------------------------
struts2:struts.xml里:
<constant name="struts.i18n.encoding" value="utf-8"></constant>
--------------------------------------
tomcat6:confserver.xml:
  <connector port="8080" protocol="http/1.1"
connectiontimeout="20000"
redirectport="8443" uriencoding="utf-8"/>
--------------------------------------
mysql:my.ini:
default-character-set=utf8
数据库检查也确认是utf-8
--------------------------------------
页面:所有页面只都是utf-8编码,没有额外编码冲突:
<%@ page language="java" import="java.util.*" pageencoding="utf-8"%>
--------------------------------------

试问为啥会出现数据入库乱码问题?
哪需要修改?
核心思想是“所有编码要统一”:以统一成utf-8为例

1. 开发工程相关
选中工程,点击右键,properties,看你工程的编码是不是也是UTF-8

2. tomcat相关
(1)在tomcat的conf/server.xm中改写为
<Connector port="8080" protocol="HTTP/1.1"
  connectionTimeout="20000"
  redirectPort="8443" URIEncoding="UTF-8"/>
也就是增加URIEncoding="UTF-8"

3. 应用相关
(1)web.xml 中写一个监听器:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>
<!-- lee.AuthorityFilter -->org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
  </filter>
  <filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
  </filter-mapping>
(2) 在applicationContext.xml里配置
jdbc.url=jdbc:mysql://localhost:3306/dddddd?useUnicode=true&characterEncoding=utf8
的时候出了问题,后来改成了
jdbc.url=jdbc:mysql://localhost:3306/dddddd?useUnicode=true&amp;characterEncoding=utf8
PS:将&改成了&amp;
之后通过了,应该是xml的问题
(3)所有的jsp网页全部采用uft-8编码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
或者
<%@ page contentType="text/html; charset=UTF-8"%

3. 数据库相关
在向mysql插入中文字符时,经常会出现乱码问题,经分析如下:
       核心问题就是数据库服务器无法从URL中获知Client使用了哪个编码。于是就使用数据库服务器上默认编码(default-character-set来解析用户发送的sql语句。这样,原本用户是用操作系统的编码(java 是以unicode编码保存),但是服务器硬给转成default-character-set,所以就乱码了。

Client端只要配置好
useUnicode=true
characterEncoding=utf-8
即:DBURL=jdbc:mysq://localhost/test?useUnicode=true&characterEncoding=utf-8
这两个属性。只要指定了,就不会乱码。utf-8可以,gb2312可以,gbk可以。指定了什么,Client就默认以这种
编码转换SQL语句,服务器也就知道怎么转会去。相当于告诉服务器,我客户端是以什么编码发送的,你可以看着办吧。

(1)看看是你插入数据库之前是乱码还是之后是乱码
  public void checkEncode() throws SQLException {
ResultSet rs = this.conn.createStatement().executeQuery("SHOW VARIABLES LIKE 'character_set_%'");
while(rs.next()){
System.out.println(rs.getString(1) +", " +  rs.getString(2));

}
rs.close();
}
结果用select()方法查询结果如下:
character_set_client,latin1    //将按latin1进行编码转换,此时插入中文当然会有乱码问题
character_set_connection,latin1
character_set_database,utf8
character_set_filesystem,binary
character_set_results,
character_set_server,latin1    //服务器default-character-set的设置
character_set_system,utf8
character_sets_dir,/usr/local/mysql-standard-5.0.27-Linux-i686/share/mysql/charsets/
注意第一行就可以了,可见使用的是latin1。
而latin1本身就无法表示汉字,经过这个编码打包的SQL语句发给Server,Server也用Latin1解析也无法还原。当然如果设置default-character-set=utf8,是不会出现乱码的。
*/

(2).在mysql的my.ini中添加
default-character-set=utf8

(3)建成的数据库、表、字段全部统一编码:utf-8
也即整理为utf8_general_ci


分享到:
评论

相关推荐

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台4

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台4

    ssh2+mysql论坛完整代码和数据库文件

    SSH2+MySQL论坛完整代码和数据库文件是一套基于SSH2(Spring、Struts2、Hibernate)框架和MySQL数据库实现的论坛系统。这个资源对于学习Java Web开发,特别是SSH2框架的实战应用非常有价值。SSH2是Java开发中常见的...

    基于ssh+mysql+easyui的酒店客房管理系统.zip

    基于ssh+mysql+easyui的酒店客房管理系统.zip基于ssh+mysql+easyui的酒店客房管理系统.zip基于ssh+mysql+easyui的酒店客房管理系统.zip基于ssh+mysql+easyui的酒店客房管理系统.zip基于ssh+mysql+easyui的酒店客房...

    SSH2+mysql

    在SSH2+MySQL的环境中,MySQL作为后端存储系统,存储文件信息、用户数据以及任何其他应用程序所需的数据。 5. **文件上传和分页显示**:文件上传是Web应用中的常见功能,这里可能使用了Struts或其他组件来处理文件...

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台2

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台2

    ssh2+extjs+mysql

    在"ssh2+extjs+mysql"的项目中,SSH2负责后端的业务逻辑和数据处理,ExtJS构建前端用户界面,MySQL作为数据存储。由于这个项目声称使用了最小的jar包(只有20个),这意味着开发者可能进行了精简配置,只包含了必要...

    SSH框架+Mysql实现用户登录

    SSH框架,全称为Struts2、Spring和Hibernate的组合,是Java Web开发中常见的三大开源框架。这个项目标题“SSH框架+Mysql实现用户登录”表明我们将探讨如何使用这三个框架与MySQL数据库一起构建一个用户登录功能。...

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台

    该课程是北风品牌课程-《BF-TECH J2EE软件工程师就业课程》 第五阶段:项目实战一、开发基于SSH2+Maven+JeasyUI+MySQL技术的 【易买网电子商务交易平台】课程。 jQuery EasyUI简称jeasyui,也就叫easyui,是一组基于...

    SSH+MYSQL 开发java web 企业级新闻系统

    企业级新闻系统(SSH+MYSQL) ## 部署说明 1. 创建数据库。使用MySQL,字符集选择为`utf8`或者`utf8mb4`(支持更多特殊字符,推荐)。 2. 创建数据库导入数据。数据库在`News\`目录下,参考数据脚本创建数据库。 3. ...

    非常实用Java OA系统源码ssh2+mysql

    在"非常实用Java OA系统源码ssh2+mysql"中,我们可以深入探讨以下几个重要的知识点: 1. **Spring框架**:Spring是Java应用开发的核心框架,提供依赖注入(DI)和面向切面编程(AOP)功能,简化了Java应用程序的...

    JavaEE +SSH框架+mysql数据库 BBS论坛系统项目地址.docx

    通过这个项目,初学者不仅可以掌握JavaEE开发的基本流程,还能深入了解SSH框架如何协同工作,以及如何利用MySQL进行数据管理。同时,它也是对软件工程方法论的实践,包括需求分析、设计、编码、测试等环节,对于提升...

    ERP Demo SSH+MySQL+easyUI

    ERP Demo SSH+MySQL+easyUI ERP Demo SSH+MySQL+easyUI ERP Demo SSH+MySQL+easyUI ERP Demo SSH+MySQL+easyUI

    Struts2+Hibernate+Spring(SSH2)+MySQL框架的整合.zip

    Struts2+Hibernate+Spring(SSH2)+MySQL框架的整合,还附带sql脚本,虽然现在SSH已经不想当年那么火了,但是由于很多公司基于技术的成熟性考虑,一般不会再花更过的钱去学习一些新的框架,所以现在很多公司都还在采用...

    Java基于jsp的超市管理系统的实现ssh+mysql.zip

    Java基于jsp的超市管理系统的实现ssh+mysql.zipJava基于jsp的超市管理系统的实现ssh+mysql.zipJava基于jsp的超市管理系统的实现ssh+mysql.zipJava基于jsp的超市管理系统的实现ssh+mysql.zipJava基于jsp的超市管理...

    Java基于jsp的酒店管理系统的实现ssh+mysql.zip

    Java基于jsp的酒店管理系统的实现ssh+mysql.zipJava基于jsp的酒店管理系统的实现ssh+mysql.zipJava基于jsp的酒店管理系统的实现ssh+mysql.zipJava基于jsp的酒店管理系统的实现ssh+mysql.zipJava基于jsp的酒店管理...

    Java基于jsp的图书管理系统的实现ssh+mysql.zip

    Java基于jsp的图书管理系统的实现ssh+mysql.zipJava基于jsp的图书管理系统的实现ssh+mysql.zipJava基于jsp的图书管理系统的实现ssh+mysql.zipJava基于jsp的图书管理系统的实现ssh+mysql.zipJava基于jsp的图书管理...

    Java基于jsp的在线博客网的实现ssh+mysql.zip

    Java基于jsp的在线博客网的实现ssh+mysql.zipJava基于jsp的在线博客网的实现ssh+mysql.zipJava基于jsp的在线博客网的实现ssh+mysql.zipJava基于jsp的在线博客网的实现ssh+mysql.zipJava基于jsp的在线博客网的实现ssh...

    Java基于jsp的课程设计系统的实现ssh+mysql.zip

    Java基于jsp的课程设计系统的实现ssh+mysql.zipJava基于jsp的课程设计系统的实现ssh+mysql.zipJava基于jsp的课程设计系统的实现ssh+mysql.zipJava基于jsp的课程设计系统的实现ssh+mysql.zipJava基于jsp的课程设计...

    Java基于jsp的连锁酒店管理系统的实现ssh+mysql.zip

    Java基于jsp的连锁酒店管理系统的实现ssh+mysql.zipJava基于jsp的连锁酒店管理系统的实现ssh+mysql.zipJava基于jsp的连锁酒店管理系统的实现ssh+mysql.zipJava基于jsp的连锁酒店管理系统的实现ssh+mysql.zipJava基于...

Global site tag (gtag.js) - Google Analytics