从物理字节流的角度来看,对于使用UTF8存储的每个文件,我认为UTF8 bomless与Cp1252完全相同,是真的吗?
发布于 2012-06-10 07:28:14
这绝对不是真的。如果你想让它成为一个真实的陈述,你需要添加“如果我只使用US-ASCII字符”子句。但这是一个巨大的“如果”。如果我们只使用US-ASCII字符,许多编码甚至不会存在。包括UTF-8在内的许多编码都确保所有US-ASCII字符都使用相同的单字节表示形式进行编码。
发布于 2012-06-12 03:12:46
不是的。UTF-8不仅涵盖了更大的字符集,而且码点U+7f以上的任何unicode字符都将在UTF-8中由多个字节编码,在CP-1252中由单个字节编码。CP-1252和ISO-8859-1 (也称为拉丁语-1)之间有更密切的对应关系,但即使它们在小但重要的方面也是不同的。这种差异导致了许多最常见的编码问题。
举个例子,左边的单卷引号由unicode代码点U+2018表示。在CP-1252中,这被编码为字节0x91。这个字符在拉丁文-1中根本不存在,而在UTF-8中,它是由三字节序列0xe28098编码的。
更一般地,可以说拉丁-1和UTF-8是基于unicode的编码,因为所有编码都可以算法地映射到unicode代码点,并且将表示该字符,而CP-1252是非基于unicode的编码。用于表示字符的字节与其unicode代码点之间没有规则的对应关系。
https://stackoverflow.com/questions/10965228
复制相似问题