在window平台下,我用utf-8在文本里写了"中国人",然后打开,没有乱码。照理说window下的默认是gbk之类的中文字符集。以gbk去浏览utf-8的会乱码啊。
还是说文本的底层数据结构里有具体的编码信息,打开时会自动转换?
如果是手动创建一个中文文本,用utf-8去读的话会乱码的,因为此时用的是gbk编码。

解决方案 »

  1.   

    文件的开始两个字节是编码信息 ,你可以用ultraEdit打开 ,切换到十六进制模式,可以看到EF BB BF 编码信息
      

  2.   

    windows记事本保存文本时在文本文件开始的3字节写入了文件编码格式,用其它文本编辑工具软件存盘时可以选择是否在文本文件开始的3字节写入BOM。linux下文本编辑器保存文本文件时不在文本文件开始的3字节写入了文件编码格式。打开文件时指定文件对应的编辑格式,才不会有乱码。
      

  3.   

    UTF-8 不需要 BOM 来表明字节顺序,但可以用 BOM 来表明编码方式。字符 "Zero Width No-Break Space" 的 UTF-8 编码是 EF BB BF。所以如果接收者收到以 EF BB BF 开头的字节流,就知道这是 UTF-8编码了。Windows 就是使用 BOM 来标记文本文件的编码方式的。