## 选用数据库
为了更好的识别中文、日文、英文、希腊语。对常用的符号进行了编码,这个编码就是字符集。
常用字符集:
| 字符集 | 说明 | 字节长度 |
| --- | --- | --- |
| ASCII | 美国标准信息交换代码 | 单字节 |
| GBK | 汉字内码扩展规范 | 双字节 |
| Unicode | 万国码 | 4字节 |
| UTF-8 | Unicode 的可变长度字符编码 | 1到6个字节 |
### ASCII
ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础 ASCII 码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号,以及在美式英语中使用的特殊控制字符。
### GBK
GBK 向下与 GB2312 编码兼容。是中华人民共和国定义的汉字计算机编码规范。早期版本为 GB2312
### Unicode
Unicode(统一码、万国码、单一码)Unicode 是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。以满足跨语言、跨平台进行文本转换、处理的要求。
### UTF-8
是一种针对 Unicode 的可变长度字符编码,也是万国码。因为 UNICODE 比 ASCII 占用大一倍的空间,而对 ASCII 来说高字节的 0 对他毫无用处。为了解决这个问题,就出现了一些中间格式的字符集,他们被称为通用转换格式,即UTF(Universal Transformation Format)
### 查看 MySQL 可用字符集
MySQL支持各种字符集,要获得 MySQL 数据库服务器的所有可用的字符集,可以使用语句如下:
SHOW CHARACTER SET
### 设置客户端连接字符集
如果客户端和数据库服务器交互使用 latin 字符集, 数据库数据存储使用 UTF-8 字符集,数据库服务器返回给客户端的数据就可能出现乱码。
这就如同一个中国人和一个美国人讲日本话,沟通出现了障碍,我们可以通过 SET NAMES 语句来使沟通处在同一个频道上,语法如下:
SET NAMES charset_name
SET NAMES 'x' 语句等同于如下这些语句:
- SET character_set_client = x; // 客户端发送给服务器的查询语句字符集
- SET character_set_results = x; // 服务器返回给客户端的数据字符集
- SET character_set_connection = x; // 连接使用的编码
设置客户端连接字符集为 *utf-8* :
SET NAMES 'utf8';
**注意:** MySQL 中 *utf-8* 字符集写的是 *utf8* 没有中间的中横线。