See You Again

聊聊字符集和编解码的那些事

字符编解码出错的问题几乎每个程序员都会遇到,多出现在国际化、跨平台等场景,如:中文乱码、邮件乱码、打开文件乱码、UnicodeEncodeError……这也经常是容易令人困惑的一个点,今天就试图理一理这块。

一些概念

这里有一个问题,不同的国家使用不同的语言和字符集,这就容易出现各种不兼容的问题。Unicode的出现正是为了统一,它几乎覆盖了全世界的字符。
注意早期一个编码方式就是一个字符集,到 Unicode 才做概念区分。

实例理解

为了加深理解,我们看看 Python2.7 的实现:

可见在 Python 中的Unicode编码可以看作是文字的抽象(并不是用字节来表示,而是各种字符的代号),是不同编码方式之间转换的桥梁。如果要保存Unicode字符到文件里,则必须先进行编码处理(如UTF8、GBK)。

在程序中,对编解码的使用建议是:

小结

虽然在不同的字符集、编码之间切换很头疼,庆幸的是我们有一个大而全的编码方式UTF8,相信本文的建议能祝你一臂之力。

更多参考

2015-11-28 喜欢

Copyright © 2015-2018 转载请注明出处

回到顶部 ↑