关于Unicode
记得之前写过,但没找到,应该是自己记错了吧
Unicode
基本概念网上很容易得到,就是全球统一的字符集
UCS-1, UCS-2,UCS-4(实际上是没有UCS-1的,但ascii可以当成是UCS-1),分别是占用一个字节,两个字节,4个字节的表示。
Python3内存中存的字符串默认都为unicode,并且做了如下优化。如果字符串中最高含有UCS-4字符,那么每个字符串都占用4个字节,否则如果有UCS-2,那么占用两个字节。否则占用1个。
Go中字符串均以utf-8来存储,想要转化为unicode需要尽心rune操作。
utf-8
utf-8相对于unicode来说设计的就比较合理,文本中存储方式一般也是以utf-8方式存储。utf-8占用情况从一个字节到6个字节不等。因为特殊的编码规则,所以不需要统一的字符占用数,需要一个就存一个,需要三个就存三个,这样一来就大幅节省了内存占用空间。
比如英文字母就占用一个字节的空间,中文大多都是占用三个字节的空间,所以从使用上来说,utf-8是非常好用的。这也是utf-8现在成为主流的原因之一。