Unicode又称统一码,万国码。uni是一个英文词根,原型是one, 表示“单一, 一个”,所以unicode本意是“一个码”,就是让每个字符都有一个唯一的编码。它就像个武林盟主,把世上所有的语言符号一勺烩,一统了编码江湖。不过缺点也很明显,为了统一,牺牲了效率,常用2个字节存储一个符号(生僻字符可能需要4字节)。这样对于本来只占用一个字节的英文字母来说(ASCII编码),相当于增加一倍的存储空间。西方人一向都是这也要,那也要,可不会吃这亏。
为了解决这个问题,UTF-8出现了,UTF是Unicode Transformation Format的缩写,表示Unicode的一种转换格式。它的特点是编码可长可短,根据字符的实际长度来分配存储空间。具体怎么分配的呢?足见西方人“我不上天堂谁上天堂?”的处事智慧。
经过一番折腾,实现的效果如下:
①西方字符的UTF-8码与原来的ASCII编码完全一致,一点亏也不吃。
②中文字符的Unicode码转成UTF-8码由的2个字节变成了3个字节。
谁占便宜了谁吃亏一目了然,可怜的我们被人收割了还用得不亦乐乎。
UTF-8编码既能节省空间,又不会出现乱码,真是好用得不要不要了!
不过UTF-8编码也有点儿小问题,就是长度变来变去的,计算机处理起来不太方便,为了解决这个问题,处理前需要预先要将UTF-8转换为Unicode。
也就是说,在计算机内存中,统一使用Unicode编码,需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
举两个例子:
(1)记事本。“.txt”文件中保存是UTF-8,读取文件时转换为Unicode并存入内存。保存文件的时再把Unicode转换为UTF-8。
(2)浏览网页。服务器会把Unicode内容转换为UTF-8格式的,再传输到浏览器。