Mysql数据中文乱码问题处理

MYSQL数据库中的字符集设置

在建立数据库和数据表的时候,能够选择对应字符编码方式,如utf8,gbk,gb2312等等。也能够在后面修改表的Collation配置。html

因此数据表的Collation配置必须可以表示表中的中文字符,这是最基本的要求。而后字符必须是使用该Collation兼容的字符集来编码的,这样才能正常显示和被mysql处理。mysql

字符集配置变量

能够经过以下命令查看字符集变量值:sql

show variables like 'char%';

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	D:\HwsApacheMaster\mysql\share\charsets\

SHOW VARIABLES LIKE 'collation%';

# Variable_name, Value
collation_connection, utf8_general_ci
collation_database, utf8_general_ci
collation_server, utf8_general_ci

这些变量的含义和做用,参见官方文档解释: Connection Character Sets and Collations数据库

中文乱码的基本缘由:编码

  • character_set_client:客户端的字符集
  • character_set_results:结果字符集
  • character_set_connection:链接字符集

这三个系统参数的做用:code

  • 信息输入路径: client--connection--server--database (数据传送方向从左到右,server负责解释和转换)
  • 信息输出路径: database--server--connection--results (数据传送方向从左到右,server负责转换和输出)

故这几个系统参数的值须相同,否则以不一样的编码方式传送数据,若编码方式不兼容,则容易形成乱码的问题。server

客户端经过以下相似命令能够修改上述三个参数的字符集值:htm

set names gb2312;

可是该命令没法修改character_set_server变量的值,所以须要注意是否匹配一致。ci

相关文章
相关标签/搜索