在我们通常使用的windows系统中,我发现了一个有趣的现象。我新建一个空的文本文档,点击文件-另存为-编码选择UTF-8,然后保存。此时这个文件明明是空的,却占了3字节大小。原因在于:此时保存的编码方式自动会变为UTF-8 BOM

一、一个汉字在不同的编码方式中占多少字节?

1.在UTF-8中,一个汉字占3个字节(一个字符占一个字节)

2.在ASCII码中,一个汉字占2个字节(一个字符占一个字节)

3.在Unicode编码中,一个汉字占2个字节(一个字符同样占两个字节,所以JAVA中char a = '中';是可以的)

二、UTF-8与UTF-8 BOM

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

---------------------
作者:LegendaryHsl
来源:CSDN
原文:https://blog.csdn.net/legendaryhsl/article/details/78794121
版权声明:本文为博主原创文章,转载请附上博文链接!

UTF-8与UTF-8 BOM相关推荐

  1. UTF—8与UTF—8(无bom)格式

    BOM--Byte Order Mark,就是字节序标记 在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF.而FFFE在U ...

  2. 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词

    这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...

  3. 【转】谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词

    这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的&quo ...

  4. 转:谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词

    一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的" ...

  5. 代码点与代码单元和Unicode相关的UTF

    java字符串由char序列组成,char数据类型是一个采用UTF-16编码表示Unicode代码点的代码单元,大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元来表 ...

  6. UTF、Unicode、ASCII及中文编码

    一.Unicode缘起 Unicode是一种字符编码规范 . 1.国际标准ASCII编码 先从ASCII说起.ASCII是用来表示英文字符的一种编码规范,每个ASCII字符占用1个字节(8bits)  ...

  7. Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码

    将字符转换为二进制码的过程,我们称为编码,将二进制码转换为字符的过程,我们称为解码. 编码和解码时所采用的规则,我们称为字符集 常见的字符集: ASCII - 美国人编码,使用7位来对美国常用的字符进 ...

  8. Unicode、UTF-8 和 ISO8859-1到底有什么区别(转载)

    本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 c ...

  9. UTF8 与 UTF8 +BOM 区别

    一个带标签,一个没有标签. BOM是Byte Order Mark(定义字节顺序),因为在网络传输中分两种顺序:大头和小头. 由于兼容性,带BOM的utf-8在一些browser中显示为乱码. 网上搜 ...

  10. UTF8 与 UTF8 +BOM

    一个带标签,一个没有标签. BOM是Byte Order Mark(定义字节顺序),因为在网络传输中分两种顺序:大头和小头. 由于兼容性,带BOM的utf-8在一些browser中显示为乱码. 网上搜 ...

最新文章

  1. websocket如何区分用户_WebSocket与普通Socket的差异
  2. CentOS Linux下VNC Server远程桌面配置详解
  3. Python实现九九乘法表
  4. Revvel如何将视频转码速度提升几十倍?
  5. 【笔记】跨域重定向中使用Ajax(XHR请求)导致跨域失败
  6. 明明还有空间,硬盘却写不进去了!
  7. 【原】android【手机】屏幕适配解决方案,完美适配适配hdpi,xhdpi,xxhdpi的做法。...
  8. 《数据结构C语言版》——线性表详解,你一定能够看得懂学得会的宝典
  9. post发送请求参数注意的问题
  10. Spring(二十二):Spring 事务
  11. postgresql 分割_三分钟解析postgresql提权
  12. JAVA 内部类(innerclasses)
  13. PyCharm中,如何成功 import caffe?
  14. Windows PowerShell窗口下长ping+时间戳+记录log
  15. 海思Hi2115 NB-IOT资料,Hi2115芯片模块介绍
  16. MapGIS目录的设置
  17. phpcms v9模板制作教程
  18. 南航计算机考研专业课复习重点
  19. 【Ignite】使用数据库软件DBeaver管理Apache Ignite
  20. ppt中插入html格式图表

热门文章

  1. Redis问题——Error: 磁盘在使用中,或被另一个进程锁定。
  2. 生成树计数Matrix-Tree定理-数学
  3. Python机器学习:训练Tesseract
  4. 第三个Python程序:Python函数
  5. 中国矿业大学计算机学院机房,2020年中国矿业大学计算机学院初试自命题科目考试大纲-数据结构...
  6. java gui 案例_JavaGui入门—布局的嵌套使用附实例
  7. HarmonyOS ScrollView 使用
  8. Make sure no other Soong process is using it
  9. Android Studio 工具栏消失了 设置回来
  10. startActivity(xx,xx.class) 传递数据