记录一次IDEA非法字符‘\ufeff‘报错

记录一次IDEA非法字符‘\ufeff‘报错_第1张图片

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人
个人主页:Leo的博客
当前专栏: 报错以及Bug
✨特色专栏: MySQL学习
本文内容:记录一次IDEA非法字符’\ufeff’报错
️个人小站 :个人博客,欢迎大家访问
个人知识库: 知识库,欢迎大家访问

UTF8 与 UTF8-BOM,大端与小端等编码到底有何不同

1. 问题发现

最近在运行一个开源项目的时候,后端SpringBoot工程运行时,报了一个错,截图如下

image-20230908135357992

BOM

出于好奇,我们查一下这个编码\\ufeff是个什么东东,查询得知,这是一个标识字节存储顺序的编码。

这个涉及到一个名词:BOM

BOM:**Byte Order Mark,**中文名译作“字节顺序标记”。我们知道一个UNICODE编码中一个汉字大多数占用2个字节,那个这两个字节哪个存储在存储地址高位,哪个存储在低位呢?

Unicode编码中,FEFF表明字节流是Big-Endian(大端序,内存低地址存放高位数据),FFFE则表明字节流是Little- Endian(小端序,内存的低地址存放低位数据)。

(可以巧妙区分为:内存低地址存的是低位就是小端序,内存低地址存的是高位就是大端序)

如“0x11223344”,这个变量的高字节是”0x11“,最低字节是为”0x44“,大端存储时为:

内存地址 数据
0x0010 0x11 低内存地址,高位数据
0x0011 0x22
0x0012 0x33
0x0013 0x44 高内存地址

而小端时数据的顺序则是相反的:

内存地址 数据
0x0010 0x44 低内存地址,低位数据
0x0011 0x33
0x0012 0x22
0x0013 0x11 高内存地址

2. 思路

解决的思路是将文件编码格式由其他编码格式转为 UTF-8格式。

3. 解决方式

3.1 方式一

选择一个其他编码,如GBK。(我选的是GBK)。如下图

记录一次IDEA非法字符‘\ufeff‘报错_第2张图片

第二步:重复步骤一,再将编码选择回来,即第二次选择UTF-8编码。

第三步:嗯,没有第三步,这时候问题应该已经解决了。

3.2 方式二

使用编辑器软件/IDE(windows记事本程序除外)将文件内容复制一份重新保存,并删除旧文件。

你可能感兴趣的:(#,报错及Bug,intellij-idea,java,ide)