• 解决hibernate保存数据到mysql中出现乱码问题


        今天使用hibernate保存数据到mysql中,发现出现乱码问题,经过检查,发现接收到的是正确中文,说明客户端浏览器将中文编码发送到服务器过程中无乱码问题,后来查找资料:

    首先要告诉数据库要插入的字符串的字符集,mysql 默认使用的字符集是 latin1。我要保存的字符串是 UTF-8 编码的(字符集是 Unicode),所以包含这个字段的表应该使用 UTF-8 编码。

    这里有几种解决办法。

    1、在建立数据库的时候指定数据库的字符集编码,这样,这个数据库的所有表都会默认使用数据库的字符集编码。如 create database foo charset utf8;

    2、在建表的时候指定字符集编码。如 create table foo (id char(20)) charset utf8;

    3、指定某一列使用的字符集编码。如create table foo (id char(20) charset utf8);

    如果你有需要的话还可以指定字符排序的规则,也就是指定 collation,如 create database foo charset utf8 collate utf8_general_ci;,同样也可以指定单独的表、列使用的 collation 规则。

    然后在使用 jdbc 连接数据库的时候要告知 jdbc 使用什么字符集编码来跟服务器通信。很简单,只需要在 jdbc 指定数据库路径时做一点修改就可以了。比如,jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf8。注意如果在 XML 文件里面的话 “&” 要改成 “&amp”。

    完整的写法:jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=UTF-8

    在hibernate的配置文件里面修改代码如下:

    <property name="connection.url">  
    
               jdbc:mysql://127.0.0.1:3306/hello?useUnicode=true&characterEncoding=UTF-8  
    
    </property> 
  • 相关阅读:
    linux就该这么学.pdf
    linux中shell编辑小技巧
    相关功能分享
    现代操作系统第三版高清.pdf中文版免费下载
    linux高性能服务器编程pdf免费下载
    git每次更新都需要输入账号密码,如何解决?
    Python 面向对象
    模块和包
    Python常用模块(collections、 time、 random、 os 、sys、序列化模块)
    内置函数和匿名函数(lambda)
  • 原文地址:https://www.cnblogs.com/lomomiao/p/4285397.html
Copyright © 2020-2023  润新知