本帖最后由 Qter 于 2021-4-4 07:04 编辑
一个汉字在不同的编码方式中占多少字节? 1.在UTF-8中,一个汉字占3个字节(一个字符占一个字节) 2.在ASCII码中,一个汉字占2个字节(一个字符占一个字节) 3.在Unicode编码中,一个汉字占2个字节(一个字符同样占两个字节,所以JAVA中char a = '中';是可以的) BOM即byte order mark UTF-8文件中放置BOM主要是微软的习惯,但是放在别的系统上会出现问题。 不含BOM的UTF-8才是标准形式,UTF-8不需要BOM 带BOM的UTF-8文件的开头会有U+FEFF,所以我新建的空文件会有3字节的大小。 三、创建UTF-8(而非UTF-8 BOM)文件的方法 在发现文件另存为UTF-8缺得到UTF-8 BOM文件后,我们怎样才能得到UTF-8呢? 法1.先另存为UTF-8保存,再使用notepad++打开,把里面的编码设置为无BOM的UTF-8然后保存。(此方法治标不治本,因为当你再次在里面写汉字时,文件会自动变成UTF-8 BOM) 法2.用JAVA代码 可以很轻松的创建UTF-8文件,且可以随便写汉字,文件字节数=汉字数*3 ——————————————— BOM:byte order mark,定义字节顺序,因为网络传输中分为两种,大头和小头。uft-8不需要bom表明字节顺序,但可以用BOM来表示编码方式,windows就是采用bom来标记文本文件的编码方式的。
bom是为utf-16和utf-32准备的,用于标记字节顺序。微软在utf-8中使用bom是因为这样可以把UTF-8和ASCII等编码区分开来,但这样的文件在windows之外的操作系统里会带来问题。
不含bom的UTF-8才是标准形式。UTF-8」和「带 BOM 的 UTF-8」的区别就是有没有 BOM。即文件开头有没有 U+FEFF。 UTF-8 的网页代码不应使用 BOM,否则常常会出错。 ———————————————— BOM(byte order mark)是为 UTF-16 和 UTF-32 准备的,用于标记字节序(byte order)。UTF-8不推荐使用无意义的BOM,但许多Windows程序却在保存UTF-8编码的文件时将其存为带BOM的格式(即在文件开头加上0xEFBBBF三个字节),这么干的就包括Windows记事本,这种编码格式的文件在 Windows 之外的操作系统里会出现问题。 解决方案 建议大家使用Notepad++编辑,在 菜单栏-编码 中选择以 UTF-8 无BOM格式编码。
https://blog.csdn.net/esonbest1234/article/details/50729484 |