问答详情
源自:1-1 文件的编码

手工创建的文件和从项目中拷贝出来的文件有何不同

为什么从项目中拷贝出来的utf-8编码的文件,就可以正常打开?而手工创建的非ANSI编码(如课程中的utf-8编码的“联”文件)的文件打开时就会乱码?二者有何区别?

提问者:xqliu87 2017-02-05 22:50

个回答

  • 律生息
    2017-02-10 11:30:32
    已采纳

    一切都是由于BOM

    当我们直接在记事本中直接创建文本文件,

    不使用另存为

    那么文本文件默认以ansi编码来保存文字信息,却没有给他加上BOM,

    (BOM)就是该文本编码格式的标记,用来告诉记事本(或者其他软件这里面的内容有什么编码来解析)

    另存为这个过程就是加了BOM

    你没有另存为就没有BOM

    那么问题来了

    记事本说“mdzz,这到底要我怎么解析呢?没办法,一个个试吧,诶!“

    由于默认的联通,联,在用ANSI保存时,编码格式类似UTF-8,所以解析为utf-8,而联想不符合utf-8编码规则

    于是乎

    内容就生气了

    “。。。。。。。。我明明是以ANSI锁的的,你却用utf-8的钥匙来打开我,,,不开心(~……~),乱码吧,啊哈哈哈”

    我为了3积分打这么多字也不容易啊,点个赞吧,谢谢!

  • 律生息
    2017-02-10 11:33:29

    另外补充下

    BOM:在一个文本文件或者一段字符编码前加上几个固定的字节用于识别:

    EF BB BF - 我是UTF-8

    FF FE - 我是UTF-16LE

    FE FF - 我是UTF-16BE


  • eq361
    2017-02-06 11:08:41

    兄弟,不要拿那个"联"来说事,你试试其他的,Java是面向对象高度封装的,前期学习过多考虑底层实现不利于学习,打个比方,别人把各种工具都做好了,你只要知道怎么用就行了,会用工具就能干事,你非要知道工具是怎么做的,时间会不够的。再说一句,那个“联”真是一个巧合。

  • qq_太阳是明朗的_0
    2017-02-06 11:05:59

    电脑上默认ANSI 而那个联文件是一种巧合,创建出来的是utf-8,但里面的文字是ANSI编码存放的,这个针对的是电脑的ANSI 认不出 这个直接创建的utf-8,由于字节可以是任何编码,文件是存储这些编码的地方,那个直接拷贝出来的utf-8的文件,只是保证了本身自己的编码规则。

  • eq361
    2017-02-06 10:53:28

    简单的说用什么编码,就用什么解码