MySQL 字符集问题

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

 

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

解决方案:

设置变量'character_set_client', 

 

查看当前数据库的字符集

 show variables like 'character%'; 

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

 show variables like 'collation%'; 

 

 

 

 请看下面两张图片:

 

注意到了吗 ? mysql.exe 在连接到服务器后也是使用命令 SET NAMES 'gbk'; 来设置字符集的!

 

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

 

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

#include <stdlib.h>

system("chcp 65001 > NUL");

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

 

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

 

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

posted @ 2018-05-23 16:04  develon  阅读(214)  评论(0编辑  收藏  举报