在中国windows的编码是本地编码 , 即GBK,GB2312,GB18030等
GBK 也就是windows-986
Windows现在只支持Unicode (UTF-16),不再支持ANSI(因为各国家地区标准不统一,导致转换不便)
android系统中的编码,根据不同地区法律改变?
ASCIl的时候, 还不区分字符集和编码.
字符集(char set)就是字符的集合,收录了一定数量的字符。每个字符有对应的ID值,叫码点(code point)。实际存储的时候,不一定是直接存储字符串的码点(比如,为了节约空间),要进行转换。这个转换规则就是编码。
有多少个字符集呢?
名词解析:
character encoding
code point / code position
character map 字符映射
BOM (Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码。
UCS 规范建议我们在传输字节流前, 先传输字符 "Zero Width No-Break Space"。这样如果接收者收到 FEFF,就表明这个字节流是 Big-Endian 的;如果收到FFFE,就表明这个字节流是 Little- Endian 的。因此字符 "Zero Width No-Break Space" (“零宽无间断间隔”)又被称作 BOM。
ANSI ANSI编码
ascii gbk2312 big5 等都是ANSI的一种
不同 ANSI 编码之间互不兼容
UCS Unicode Character Set
UTF-8 UTF意为通用字集转换格式(Universal Character Set Transformation Format)
编码方案
UTF-7、UTF-8和UTF-16都是基于Unicode的编码方案。
Unicode Universal Multiple-Octet Coded Character Set
范围0-0x10FFFF : 1114112个字符 (17*65536 : 17个plane,每个plane有65536个字符)
已定义的有近十万个字符,其中七万多是汉字
字符集 UTF-8编码用这个字符集,UTF-16也是用这个字符集.
MBCS(Multi-Byte Chactacter System,即多字节字符系统) 它是编码的一种类型,而不是某个特定编码的名称。
UTF-16 和 UTF-8 一样是变长的编码. (它们变长的"粒度"不一样,以8比特为单位增加和以16比特为单位增加.),以此类推UTF-32 至少需要32比特表示
因为至少要二个字节表示一个字符,所以UTF-16不兼容ASCII (一个字节)
码位 : 可以分配给字符的数字。
UCD: Unicode字符数据库(Unicode Character Database)
block script
Big Endian和Little Endian
utf-8没有大小端的问题?
因为UTF-8是前缀码,而UTF-16有这个问题.所以需要BOM标记.
命令:
locale
locale -a
问题
一篇文章能有两种编码吗(比如前部分为UTF-8 , 后面为GBK18030) ? 如果这样不冲突,编码如何被解码? (或者这样表述更清楚,两种编码能混用吗?)
一些工具:
查看字符的实际编码.对应的二进制数据.
Linux下的工具:
locale 命令的作用范围,例外情况( 在某个应用或路径中使用指定的locale)
字符集:en_US.UTF-8 支持中文吗?
en_US.UTF-8 表示的字符集和zh_CN.UTF8 都是UTF-8 , 前面的en_US 或 zh_CN只是告诉系统,你讲什么语言,在哪个地域.
UTF-8是编码,它属于Unicode字符集。
解码,编码过程?
UTF-16分为大端和小端, UTF-8呢?
UTF-8
一段二进制编码,如何确定它是GBK还是BIG5还是UTF-16/UTF-8?
记事本的做法是在TXT文件的最前面保存一个标签,如果记事本打开一个TXT,发现这个标签,就说明是unicode。标签叫BOM,,如果是0xFF 0xFE,是UTF16LE,如果是0xFE 0xFF则UTF16BE,如果是0xEF 0xBB 0xBF,则是UTF-8。如果没有这三个东西,那么就是ANSI,使用操作系统的默认语言编码来解释。(链接:https://www.zhihu.com/question/20650946/answer/15751688)
()
输入法实现?
打开记事本,输入一些字符,是在保存的时候才确定编码方式的吗? 如果是,在保存之前记事本中的内容用什么术语称呼?
活用:
自己如何设计出一种编码?
输入法设计
编码类型转换:
============================================================================================================
一些可以帮助理解的模型,解释字符集等一系列相关概念的关系:
四层模型,五层模型