一、概述
的乱码问题不仅仅包括中文乱码,也包括其它语言的乱码,以下称之为乱码问
题只存在于 及其以上版本。 之前的不支持多语言,所以它会将你给它的数
据“原封不动”地保存,再“原封不动”地读出来。从字节的角度来看,数据在这一过程中不会
产生任何变化,因此不会有乱码。
及以后的版本开始支持多语言,这个所谓的多语言,就是在输入输出时会
替你做编码转换。而这个转换规则就是由客户端编码和服务器端编码来决定的。
编码转换的规则就是,在输入数据时将编码由“客户端编码”转换为“服务器端编码”,输
出时将数据由“服务器端编码”转换为“客户端编码”。
二、乱码产生原因
字符编码是版本 引入的,支持多国语言,而且一些特性已经超过了其它大
多数数据库管理系统。正因为这一特性才导致的乱码问题。
字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。让我们
使用一个假想字符集的例子来区别清楚。
假设我们有一个字母表使用了四个字母:‘’、‘ ’、‘ ’、‘ ’。我们为每个字母赋予
一个数值:‘’,‘ ’,‘ ’,‘ ’。字母‘’是一个符号,数字 是‘’的编码,这
四个字母和它们的编码组合在一起是一个字符集。
假设我们希望比较两个字符串的值在 …… 语句中我们经常做值的比较:‘ ’和
‘’。比较的最简单的方法是查找编码:‘’为 ,‘ ’为 。因为 小于 ,我们可以说‘’小
于‘’。我们做的仅仅是在我们的字符集上应用了一个校对规则。校对规则是一套规则 在这
种情况下仅仅是一套规则:“对编码进行比较。”我们称这种全部可能的规则中的最简单的
校对规则为一个 二元校对规则。
但是,如果我们希望小写字母和大写字母是等价的,应该怎样那么,我们将至少有两
个规则:把小写字母‘’和‘’ 视为与‘’和‘’等价然后比较编码。我们称这是一个大小
写不敏感的校对规则。比二元校对规则复杂一些。
在实际生活中,大多数字符集有许多字符:不仅仅是‘ ’和‘’,而是整个字母表,有时
候有许多种字母表,或者一个东方的比如中文、日文、韩文、藏文、泰文等等使用上千
个字符的书写系统,还有许多特殊符号和标点符号。并且在实际生活中,大多数校对规则
有许多个规则:不仅仅是大小写不敏感,还包括重音符不敏感“重音符”是附属于一个字母
的符号,象德语的‘’符号和多字节映射例如,作为规则‘’‘ ’就是两个德语校对规则的
一种。
以 上 摘 自 手 册 。 更 多 内 容 可 参 见 :
!"#$$%&'()*'$%*)$'$$+ $) , ,'