美文网首页
关于mysql中文编码的问题解决方案

关于mysql中文编码的问题解决方案

作者: DimonHo | 来源:发表于2018-11-14 18:54 被阅读7次

问题一、数据库中文乱码

现象: 插入中文数据到mysql后,发现乱码
解决方案: 设置数据库编码统一为utf8(因为utf8是3个字节,所以会有一定的空间损耗)

问题二、中文排序没有得到预期的排序结果

现象: 根据中文字段排序时,发现排序结果并不是按照首字母顺序的结果
原因:UTF8默认校对集是 utf8_general_ci , 它不是按照中文来的。

解决办案一:
  1. 可以自定义方言类,添加convert函数
package com.wd.cloud.wdtjserver.config;

import org.hibernate.dialect.*
import org.hibernate.type.StandardBasicTypes;

/**
 * @author He Zhigang
 * @date 2018/11/14
 * @Description: 自定义数据库方言,支持中文排序
 */
public class MySQLDialect extends org.hibernate.dialect.MySQLDialect {
    
    public MySQLDialect() {
        super();
        registerFunction("convert_gbk", new SQLFunctionTemplate(StandardBasicTypes.STRING, "convert(?1 using gbk)"));
    }

    /**
     * 默认引擎为 MyISAMStorageEngine.INSTANCE
     * @return
     */
    @Override
    protected MySQLStorageEngine getDefaultMySQLStorageEngine() {
        return InnoDBStorageEngine.INSTANCE;
    }
}
  1. 指定方言为自定义的类
spring:
  jpa:
    database-platform: com.wd.cloud.wdtjserver.config.MySQLDialect
  1. 使用方法
@Query("FROM TjOrg order by convert_gbk(org_name) ASC")
List<TjOrg> getAllOrderByOrgName();
解决方案二:

直接修改该中文字段编码格式为GBK编码

ALTER TABLE tablename CHANGE column1 column2 VARCHAR(255) CHARACTER SET gbk;

tips: 注意column1 和 column2 表示将column1字段重命名column2,二者相同就不会对字段重命名了

相关文章

  • Windows 下 MySQL中文及emoji插入问题

    出现的问题 MySQL下默认的utf8编码实际是3bite的编码不能够处理中文及emoji,会出现报错。 解决方案...

  • 关于mysql中文编码的问题解决方案

    问题一、数据库中文乱码 现象: 插入中文数据到mysql后,发现乱码解决方案: 设置数据库编码统一为utf8(因为...

  • linux下mysql数据库中文乱码

    关于linux下mysql数据库中文乱码的解决方法 mysql的默认编码是latinl不支持中文,进入mysql数...

  • MySQL中文编码问题

    建库:create database db character set utf8;建表:create table ...

  • mysql (11)

    关于mysql 的编码 msyql 的默认编码是lartin1 ,如果插入中文,有的时候会显示成为 ??? 编辑 ...

  • python 读取 mysql 中文乱码

    这两天看了很多关于mysql中文乱码的问题,除了创建table的时候设置为utf8编码以及修改mysql配置文件的...

  • 解决MySQL中文乱码-Linux

    简单有效解决MySQL中文乱码的问题 1 查看MySQL的编码 使用 mysql -u root -p 登入mys...

  • 简单明白彻底解决 MySQL 中文编码问题

    简单明白彻底解决 MySQL 中文编码问题 1. 问题重现 2. 分析和解决 2.1 数据库编码设置 2.1.1 ...

  • 「MySQL」解决中文乱码

    MySQL中文乱码是一个常见的问题,解决方法也是非常简单的。由于MySQL默认编码是latin1,所以不支持中文。...

  • 编码

    参考:字符编码常识及问题解析深入分析 Java 中的中文编码问题 关于字符编码,你所需要知道的 编码是什么? 编码...

网友评论

      本文标题:关于mysql中文编码的问题解决方案

      本文链接:https://www.haomeiwen.com/subject/oszjfqtx.html