为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

5 回答

一切都是由于BOM

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

不使用另存为

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

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

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

你没有另存为就没有BOM

那么问题来了

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

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

于是乎

内容就生气了

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

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

4 回复 有任何疑惑可以回复我~

另外补充下

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

EF BB BF - 我是UTF-8

FF FE - 我是UTF-16LE

FE FF - 我是UTF-16BE


2 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信