2016-02-23 49 views
-1

当我用UTF-8保存基本上是这样说的文本文档:计算机时,使用安装在计算机某处的UTF8的代码页来弄清楚,如何将1和0转换为字符,对不对?了解不同的字符编码

当我保存这个内容:

激光 
äüß 
#§ 
在ISO-8895-1

,就变成这样(在Linux上,使用凯特编辑):

æ¿å 
äüà 
#§ 

这里没有显示那是什么在第一行和第二行显示的是一些奇怪的方块而不是字符(可以在开发人员工具中看到)。

所以我的理解是,这意味着在utf-8中代表激活的0和1的组合被映射到ISO-8895-1中的æ,对吧?奇怪的方格> <发生是因为ISO-8895-1字符集中没有该二进制数字的映射,所以计算机默认为其他编码。

这是正确的吗?

+0

[绝对最小每个软件开发人员绝对,肯定必须知道Unicode和字符集(没有借口!)](http://www.joelonsoftware.com/articles/Unicode.html) –

+0

谢谢,我已经阅读那,但我仍然不是100%确定我已经得到它。 – user3813234

回答

0

是的,有点正确。 如果将文件存储为UTF-8,则通常会得到一个特殊的字节组合,指示文件开头的编码类型。我想,凯特(不知道这个编辑器)不认识这个,只是将文件显示为别的东西。所以基本上,你的文件仍然是正确的,但只是以错误的方式可视化。 奇怪的正方形是另一个指标,Kate不能识别这些前导字节,因为通常编辑者会将它们隐藏起来,只是使用这些信息来正确显示文件。

+1

结合使用UTF-8不鼓励BOM,因此对于UTF-8文本而言,具有BOM并不常见 –

0

你说得很对。例如The character U+6FC0 (激)用UTF-8中的3个字节进行编码:0xE6 0xBF 0x80。

如果您在ISO-8859-1中解释这些字节,将得到字符æ¿。根据ISO-8859-1的版本,0x80或者根本不映射到字符,或者映射到不可打印的控制字符,这就是为什么您只能看到三个字节的两个字符。

如果您使用Windows-1252而不是ISO-8859-1,则会看到æ¿€

相关问题