之前一直在做英文中文论坛,最近公司业务发展我延伸架设了西班牙语和法语论坛。西班牙语、法语、意大利语、葡语、都属于拉丁语系。差别还是很大的,数据库字符格式当然也做了相应的调整,页面的字符编码也进行了调整。系统前后台编码格外花了点时间进行了全面的调整,也积累了对拉丁语处理的经验。重温一下数据库字符,一个不太起眼又非常重要的内容。中文论坛你要近可能的选择比较大的字库,这个玩家提交韩语日语,拉丁语言以体现玩家的实力,呵呵。
字符集和整理
整理 描述
armscii8 (ARMSCII-8 Armenian)亚美尼亚语, 二进制
   armscii8_general_ci 亚美尼亚语, 不区分大小写
ascii (US ASCII)西欧 (多语言), 二进制
   ascii_general_ci 西欧 (多语言), 不区分大小写
big5 (Big5 Traditional Chinese)繁体中文, 二进制
   big5_chinese_ci 繁体中文, 不区分大小写
binary (Binary pseudo charset)二进制
cp1250 (Windows Central European)中欧 (多语言), 二进制
   cp1250_croatian_ci 克罗地亚语, 不区分大小写
   cp1250_czech_cs 捷克语, 区分大小写
   cp1250_general_ci 中欧 (多语言), 不区分大小写
cp1251 (Windows Cyrillic)西里尔语 (多语言), 二进制
   cp1251_bulgarian_ci 保加利亚语, 不区分大小写
   cp1251_general_ci 西里尔语 (多语言), 不区分大小写
   cp1251_general_cs 西里尔语 (多语言), 区分大小写
   cp1251_ukrainian_ci 乌克兰语, 不区分大小写
cp1256 (Windows Arabic)阿拉伯语, 二进制
   cp1256_general_ci 阿拉伯语, 不区分大小写
cp1257 (Windows Baltic)巴拉克语 (多语言), 二进制
   cp1257_general_ci 巴拉克语 (多语言), 不区分大小写
   cp1257_lithuanian_ci 立陶宛语, 不区分大小写
cp850 (DOS West European)西欧 (多语言), 二进制
   cp850_general_ci 西欧 (多语言), 不区分大小写
cp852 (DOS Central European)中欧 (多语言), 二进制
   cp852_general_ci 中欧 (多语言), 不区分大小写
cp866 (DOS Russian)俄语, 二进制
   cp866_general_ci 俄语, 不区分大小写
cp932 (SJIS for Windows Japanese)日语, 二进制
   cp932_japanese_ci 日语, 不区分大小写
dec8 (DEC West European)西欧 (多语言), 二进制
   dec8_swedish_ci 瑞典语, 不区分大小写
eucjpms (UJIS for Windows Japanese)日语, 二进制
   eucjpms_japanese_ci 日语, 不区分大小写
euckr (EUC-KR Korean)朝鲜语, 二进制
   euckr_korean_ci 朝鲜语, 不区分大小写
gb2312 (GB2312 Simplified Chinese)简体中文, 二进制
   gb2312_chinese_ci 简体中文, 不区分大小写
gbk (GBK Simplified Chinese)简体中文, 二进制
   gbk_chinese_ci 简体中文, 不区分大小写
geostd8 (GEOSTD8 Georgian)乔治亚语, 二进制
   geostd8_general_ci 乔治亚语, 不区分大小写
greek (ISO 8859-7 Greek)希腊语, 二进制
   greek_general_ci 希腊语, 不区分大小写
hebrew (ISO 8859-8 Hebrew)希伯来语, 二进制
   hebrew_general_ci 希伯来语, 不区分大小写
hp8 (HP West European)西欧 (多语言), 二进制
   hp8_english_ci 英语, 不区分大小写
keybcs2 (DOS Kamenicky Czech-Slovak)捷克斯洛伐克语, 二进制
   keybcs2_general_ci 捷克斯洛伐克语, 不区分大小写
koi8r (KOI8-R Relcom Russian)俄语, 二进制
   koi8r_general_ci 俄语, 不区分大小写
koi8u (KOI8-U Ukrainian)乌克兰语, 二进制
   koi8u_general_ci 乌克兰语, 不区分大小写
latin1 (cp1252 West European)西欧 (多语言), 二进制
   latin1_danish_ci 丹麦语, 不区分大小写
   latin1_general_ci 西欧 (多语言), 不区分大小写
   latin1_general_cs 西欧 (多语言), 区分大小写
   latin1_german1_ci 德语 (字典), 不区分大小写
   latin1_german2_ci 德语 (电话本), 不区分大小写
   latin1_spanish_ci 西班牙语, 不区分大小写
   latin1_swedish_ci 瑞典语, 不区分大小写
latin2 (ISO 8859-2 Central European)中欧 (多语言), 二进制
   latin2_croatian_ci 克罗地亚语, 不区分大小写
   latin2_czech_cs 捷克语, 区分大小写
   latin2_general_ci 中欧 (多语言), 不区分大小写
   latin2_hungarian_ci 匈牙利语, 不区分大小写
latin5 (ISO 8859-9 Turkish)土耳其语, 二进制
   latin5_turkish_ci 土耳其语, 不区分大小写
latin7 (ISO 8859-13 Baltic)巴拉克语 (多语言), 二进制
   latin7_estonian_cs 爱沙尼亚语, 区分大小写
   latin7_general_ci 巴拉克语 (多语言), 不区分大小写
   latin7_general_cs 巴拉克语 (多语言), 区分大小写
macce (Mac Central European)中欧 (多语言), 二进制
   macce_general_ci 中欧 (多语言), 不区分大小写
   macroman (Mac West European)
   macroman_bin 西欧 (多语言), 二进制
   macroman_general_ci 西欧 (多语言), 不区分大小写
sjis (Shift-JIS Japanese)日语, 二进制
   sjis_japanese_ci 日语, 不区分大小写
swe7 (7bit Swedish)瑞典语, 二进制
   swe7_swedish_ci 瑞典语, 不区分大小写
tis620 (TIS620 Thai)泰语, 二进制
   tis620_thai_ci 泰语, 不区分大小写
ucs2 (UCS-2 Unicode)多语言), 二进制
   ucs2_czech_ci 捷克语, 不区分大小写
   ucs2_danish_ci 丹麦语, 不区分大小写
   ucs2_esperanto_ci Esperanto, 不区分大小写
   ucs2_estonian_ci 爱沙尼亚语, 不区分大小写
   ucs2_general_ci Unicode (多语言), 不区分大小写
   ucs2_hungarian_ci 匈牙利语, 不区分大小写
   ucs2_icelandic_ci 冰岛语, 不区分大小写
   ucs2_latvian_ci 拉脱维亚语, 不区分大小写
   ucs2_lithuanian_ci 立陶宛语, 不区分大小写
   ucs2_persian_ci 波斯语, 不区分大小写
   ucs2_polish_ci 波兰语, 不区分大小写
   ucs2_roman_ci 西欧, 不区分大小写
   ucs2_romanian_ci 罗马尼亚语, 不区分大小写
   ucs2_slovak_ci 斯洛伐克语, 不区分大小写
   ucs2_slovenian_ci 斯洛文尼亚语, 不区分大小写
   ucs2_spanish2_ci 传统西班牙语, 不区分大小写
   ucs2_spanish_ci 西班牙语, 不区分大小写
   ucs2_swedish_ci 瑞典语, 不区分大小写
   ucs2_turkish_ci 土耳其语, 不区分大小写
   ucs2_unicode_ci Unicode (多语言), 不区分大小写
ujis (EUC-JP Japanese)日语, 二进制
   ujis_japanese_ci 日语, 不区分大小写
utf8 (UTF-8 Unicode)多语言), 二进制
   utf8_czech_ci 捷克语, 不区分大小写
   utf8_danish_ci 丹麦语, 不区分大小写
   utf8_esperanto_ci Esperanto, 不区分大小写
   utf8_estonian_ci 爱沙尼亚语, 不区分大小写
   utf8_general_ci Unicode (多语言), 不区分大小写
   utf8_hungarian_ci 匈牙利语, 不区分大小写
   utf8_icelandic_ci 冰岛语, 不区分大小写
utf8_latvian_ci 拉脱维亚语, 不区分大小写
   utf8_lithuanian_ci 立陶宛语, 不区分大小写
utf8_persian_ci 波斯语, 不区分大小写
   utf8_polish_ci 波兰语, 不区分大小写
   utf8_roman_ci 西欧, 不区分大小写
   utf8_romanian_ci 罗马尼亚语, 不区分大小写
   utf8_slovak_ci 斯洛伐克语, 不区分大小写
   utf8_slovenian_ci 斯洛文尼亚语, 不区分大小写
   utf8_spanish2_ci 传统西班牙语, 不区分大小写
   utf8_spanish_ci 西班牙语, 不区分大小写
   utf8_swedish_ci 瑞典语, 不区分大小写
   utf8_turkish_ci 土耳其语, 不区分大小写
   utf8_unicode_ci Unicode (多语言), 不区分大小写
Open new phpMyAdmin window

其中这三个都是多语言
utf8_bin Unicode (多语言), 二进制
utf8_unicode_ci Unicode (多语言), 不区分大小写
utf8_general_ci Unicode (多语言), 不区分大小写

   utf8_bin Unicode (

   ujis_bin

   ucs2_bin Unicode (

   tis620_bin

   swe7_bin

   sjis_bin

   macce_bin

   latin7_bin

   latin5_bin

   latin2_bin

   latin1_bin

   koi8u_bin

   koi8r_bin

   keybcs2_bin

   hp8_bin

   hebrew_bin

   greek_bin

   geostd8_bin

   gbk_bin

   gb2312_bin

   euckr_bin

   eucjpms_bin

   dec8_bin

   cp932_bin

   cp866_bin

   cp852_bin

   cp850_bin

   cp1257_bin

   cp1256_bin

   cp1251_bin

   cp1250_bin

   binary

   big5_bin

   ascii_bin

   armscii8_bin
MySQL中的字符集和校对
MySQL服务器能够支持多种字符集。可以使用SHOW CHARACTER SET语句列出可用的字符集:

 

mysql> SHOW CHARACTER SET;

 

+----------+-----------------------------+---------------------+--------+

 

| Charset | Description                 | Default collation   | Maxlen |

 

+----------+-----------------------------+---------------------+--------+

 

| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |

 

| dec8     | DEC West European           | dec8_swedish_ci     |      1 |

 

| cp850    | DOS West European           | cp850_general_ci    |      1 |

 

| hp8      | HP West European            | hp8_english_ci      |      1 |

 

| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |

 

| latin1   | cp1252     West European    | latin1_swedish_ci   |      1 |

 

| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |

 

| swe7     | 7bit Swedish                | swe7_swedish_ci     |      1 |

 

| ascii    | US ASCII                    | ascii_general_ci    |      1 |

 

| ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |

 

| sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |

 

| hebrew   | ISO 8859-8 Hebrew           | hebrew_general_ci   |      1 |

 

| tis620   | TIS620 Thai                 | tis620_thai_ci      |      1 |

 

| euckr    | EUC-KR Korean               | euckr_korean_ci     |      2 |

 

| koi8u    | KOI8-U Ukrainian            | koi8u_general_ci    |      1 |

 

| gb2312   | GB2312 Simplified Chinese   | gb2312_chinese_ci   |      2 |

 

| greek    | ISO 8859-7 Greek            | greek_general_ci    |      1 |

 

| cp1250   | Windows Central European    | cp1250_general_ci   |      1 |

 

| gbk      | GBK Simplified Chinese      | gbk_chinese_ci      |      2 |

 

 

 

Unicode字符集
MySQL有两种Unicode字符集。你能够使用这些字符集保存大约650种语言的文本。
·         ucs2 (UCS-2 Unicode)校对规则:

 

·                mysql> SHOW COLLATION LIKE 'ucs2%';

 

 

 

·                utf8 (UTF-8 Unicode)校对规则:

 

·                 

 

·                mysql> SHOW COLLATION LIKE 'utf8%';

 

 

 

utf8_unicode_ci校对规则是根据Unicode校对规则算法(UCA)执行的, 校对规则描述见 http://www.unicode.org/reports/tr10/。此校对规则使用UCA 4.0.0版本砝码键: http://www.unicode.org/Public/UC一个/4.0.0/一个llkeys-4.0.0.txt。(以下讨论使用utf8_unicode_ci,但同样适合ucs2_unicode_ci。)
当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法。一些字符还是不能支持。并且,不能完全支持组合的记号。这主要影响越南和俄罗斯的一些少数民族语言,如:Udmurt 、Tatar、Bashkir和Mari。
utf8_unicode_ci的最主要的特色是支持扩展,即当把一个字母看作与其它字母组合相等时。例如,在德语和一些其它语言中‘ß’等于‘ss’。
utf8_general_ci是一个遗留的 校对规则,不支持扩展。它仅能够在字符之间进行逐个比较。这意味着utf8_general_ci校对规则进行的比较速度很快,但是与使用utf8_unicode_ci的校对规则相比,比较正确性较差)。
例如,使用utf8_general_ci和utf8_unicode_ci两种 校对规则下面的比较相等:

 

Ä = A

 

 

 

Ö = O

 

 

 

Ü = U

 

 
两种校对规则之间的区别是,对于utf8_general_ci下面的等式成立:

 

 

 

ß = s

 

 
但是,对于utf8_unicode_ci下面等式成立:

 

 

 

ß = ss

 

 
对于一种语言仅当使用utf8_unicode_ci排序做的不好时,才执行与具体语言相关的utf8字符集校对规则。例如,对于德语和法语,utf8_unicode_ci工作的很好,因此不再需要为这两种语言创建特殊的utf8校对规则。

 

 
utf8_general_ci也适用与德语和法语,除了‘ß’等于‘s’,而不是‘ss’之外。如果你的应用能够接受这些,那么应该使用utf8_general_ci,因为它速度快。否则,使用utf8_unicode_ci,因为它比较准确。

 

 
utf8_swedish_ci,与其它语言相关的utf8的校对规则相似,来源于utf8_unicode_ci,使用额外的语言规则。例如,在瑞典语中,以下的关系式成立,它在德语和法语中不成立:

 

 

 

Ü = Y < Ö

 

 
utf8_spanish_ci和utf8_spanish2_ci校对规则分别适用于现代和古典西班牙语。在两种校对规则中,ñ’(n-发音符)是‘n’和‘o’之间的间隔字母。另外,对于古典西班牙语,‘ch’是‘c’和d之间的间隔字母,并且‘ll’是‘l’和‘m’之间的间隔字母。