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

您所在的位置:网站首页 设置mysql编码为utf-8 简单明白彻底解决 MySQL 中文编码问题

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

2024-05-02 17:35| 来源: 网络整理| 查看: 265

1. 问题重现 mysql> create database school; mysql> use school; mysql> create table student(name varchar(10)); mysql> insert into student values("Clarke"); mysql> select * from student; +--------+ | name | +--------+ | Clarke | +--------+ mysql> insert into student values("唐三"); # 插入中文失败 ERROR 1366 (HY000): Incorrect string value: '\xE5\x94\x90\xE4\xB8\x89' for column 'name' at row 1 2. 分析和解决 2.1 数据库编码设置 2.1.1 查看 MySQL 程序编码设置 mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+

可以看到,设置里有很多的编码设置是 latin1,这个编码是无法正确显示中文的,如果你的设置也是这样,这就是导致中文编码问题的可能原因。

关于这些设置的含义:

option desc character_set_client 客户端使用的字符编码,如果客户端连接时没有设置,或者服务端已配置为忽略客户端的设置 character_set_connection 客户端设置连接数据库时的字符编码,如果客户端没有指明,则连接数据库使用该设置的编码 character_set_database 当前选中数据库的默认字符编码,如果没有选中数据库(use ),则和 character_set_server 的值一致 character_set_filesystem 文件系统的编码格式,把操作系统上的文件名转化成此字符集,即把 character_set_client转换character_set_filesystem, 默认binary是不做任何转换的 character_set_results 数据库给客户端返回时使用的编码格式,如果客户端连接时没有指明,则使用该编码 character_set_server 数据库服务器默认编码格式,创建数据库时默认使用 character_set_system 数据库系统使用的编码格式,这个值一直是utf8,不需要设置,它是为存储系统元数据的编码格式 character_sets_dir 这个变量是字符集安装的目录



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3