MySQL 支持许多字符集及其编码方案, 甚至是不同编码之间的转换.

mysql 字符集 函数 mysql字符集问题_服务器

 

在使用 MySQL 进行应用程序编程时, 常常会出现乱码现象, 这通常是由于客户端没有声明与 MySQL 服务器通信的字符串编码造成的后果.

解决方案:

设置变量'character_set_client', 

mysql 字符集 函数 mysql字符集问题_服务器_02

 

查看当前数据库的字符集

show variables like 'character%';

查看当前数据库的校对规则

show variables like 'collation%';

 

 请看下面两张图片:

mysql 字符集 函数 mysql字符集问题_MySQL_03

mysql 字符集 函数 mysql字符集问题_服务器_04

 

注意到了吗 ? mysql.exe 在连接到服务器后也是使用命令 

SET NAMES 'gbk';

 

显然, 使用 UTF-8 是 MySQL 客户端开发的首选, 但是, Windows 的控制台和 API 使用默认字符集和 UTF-16, 这显然造成了混乱.

 

幸运的是, 可以为控制台设置代码页, 以使控制台显示 UTF-8 编码的字符串, 方法是在进程中运行如下代码:

#include <stdlib.h>
system("chcp 65001 > NUL");

然后就可以在控制台窗口中显示 UTF-8 编码的字符串了(阿拉伯文, 泰文等无法正常显示, 原因不明):

mysql 字符集 函数 mysql字符集问题_服务器_05

 

同时, 我们可以将 UTF-8 编码的字符串转化为 UTF-16 或 UTF-32 编码的字符串, 他们之间的转换是基于算法的, 效率非常高.

 总之, UTF-8 在网络中非常常见, 必须熟练运用.