关于u8BOM,LF,CRLF的认知。

CRLF、UTF-8这些编辑器右下角的选项的意思 经常使用编辑器的小伙伴应该经常能看到右下角会有这么两个选项,下图是VScode中的示例,那么这两个到底是啥作用呢? 阅读详情

首先说下遇到的问题。

工作需要,有一个json文件需要被签名后使用。

当时为了开发方便用记事本另存为u8然后签名,校验通过,用git push 到repository。

        这时候问题来了,发现本地build出来的apk对json文件签名的校验是没问题的,但是jenkins build出来的就是无法识别json文件的签名。

         来回的折腾后首先发现在linux下用vi打开会看到<FEFF>的标签。这个就是所谓的BOM。先来看下百度百科对BOM的定义:

Unicode规范中的BOM
Unicode规范中有一个BOM的概念。BOM——Byte Order Mark,就是字节序标记。在这里找到一段关于BOM的说明:
在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
UTF-8编码的文件中,BOM占三个字节。如果用记事本把一个文本文件另存为UTF-8编码方式的话,用UE打开这个文件,切换到十六进制编辑状态就可以看到开头的EF BB BF了。
这是个标识UTF-8编码文件的好办法,软件通过BOM来识别这个文件是否是UTF-8编码,很多软件还要求读入的文件必须带BOM。
可是,还是有很多软件不能识别BOM。

        也就是说,我当时用记事本另存为的u8 是带BOM的u8。这样以来提交上去的文件是带了BOM,在做签名校验的时候当然就会出问题了。

        于是在linux下cp了一份,去掉BOM然后提交jenkins的就可以通过签名校验了。

         什么?你以为故事到这里就结束了?耐心往下看~

         文件push上去之后,本地同步了代码,于是本地签名校验不过了。wtf。

         又折腾了半天,本地重新签名扔进去发现git可以被识别,然后add.commit.push. WTF!居然没识别有东西提交?!

         切新分支,再来一次,commit的时候发现有LF和CRLF的提醒。所以你们懂了,问题就出现在这里。

         首先来看下LF和CRLF。

在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后
与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。Git提供了一个“换行符自动转换”功能。这个功能默认处于“自动模式”,当你
在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。Git 的“换行符自动转换”功能听起来似乎很智能、很贴心,因为它试图一方面保持仓库内文件的一致性(UNIX 风格),一方面又保证本地
文件的兼容性(Windows 风格)。但遗憾的是,这个功能是有 bug 的,而且在短期内都不太可能会修正。

         这样以来。linux提交上去的/n的文件,在我pull下来之后会变成/r/n。签名校验当然过不去了。

         解决方案:暂无完美解决方案。我可以通过

         

    git config --global core.autocrlf false

         或者通过修改gitconfig来关掉自动转换,达到我当前的目的,可是一旦有人同时在linux环境下进行同文件的修改,就包含两种了。就会导致两边都不能用的问题。wtf。 

          所以暂时的方案是本地留存了json文件做build,不做提交。


         巨坑!有大佬知道完美解决方案的话可以交流交流。

MATLAB中文乱码根源与UTF-8+BOM治理方案 字符编码是文本处理的基础概念,其核心在于字符集与编码规则的匹配;GBK与UTF-8采用不同字节映射机制,导致同一汉字在两种编码下二进制表示迥异;当MATLAB以UTF-8解析实际为GBK编码的.m文件时,因字节流误读而产生乱码,这本质是跨平台编码一致性缺失的技术问题;该问题广泛存在于MATLAB、Vivado、Keil等工具链中,尤其在中文Windows环境与Linux服务器协作场景下高频发生;解决路径需从文件层(BOM标识)、工具层(MATLAB默认编码设置)和IO层(fprintf/fileread显式 阅读详情

相关推荐

Notepad++ 8.9.3 中文版下载安装与配置全攻略:编码、插件与避坑指南

纯文本编辑器是开发运维的基础工具,其核心在于快速启动、编码兼容与高效编辑。Notepad++ 8.9.3 作为经典轻量级编辑器,在中文编码处理、插件扩展和快捷键操作上表现稳定。正确配置 UTF-8 与 GBK 编码、CRLF/LF 换行符,能有效避免乱码和脚本执行故障;合理选用 Compare、JSON Viewer 等插件可提升日志分析与配置管理效率。本文围绕官方下载、中文界面设置、编码转换及常见问题排查,提供一站式实操指引,助你快速搭建顺手的文本工作台。

aofan9566的博客 365

关于vc对utf8源码文件的CRLF、LF 换行格式,出现的BOM问题的大坑

今天碰见个问题,就是朋友从github下载回来的代码,明明函数存在的,但编译时却死活找不到。 例如(不是原型) // 缓冲区 int a = 1; int b = a; error C2065: “a”: 未声明的标识符 很灵异很百思不得其解的错误。 后来通过文件重新保存覆盖后问题解决。。 有意思的是,用git/svn等的diff比较工具对比后,却看不到文件有何

Relic Of Tesla 的专栏 7041

命令行报错“此时不应有 <”的深度解析与系统排查指南

在命令行操作与脚本开发中,文件编码和特殊字符处理是影响程序健壮性的基础技术点。其核心原理在于命令解释器依据严格的语法规则解析输入,任何不符合预期的字符(如不可见的BOM标记或未转义的重定向符)都会中断解析流程。理解并妥善处理这些细节,对于构建可靠、可移植的自动化脚本至关重要,尤其是在跨平台开发和持续集成场景下。本文聚焦由文件编码(特别是UTF-8 BOM)、命令行语法(如输入重定向符‘<’的误用)以及跨平台行尾符(CRLF vs LF)差异所引发的经典错误“此时不应有 <”,提供一套从诊断到修复的完整工程实

weixin_33178839的博客 373

U8导入根据Excel导入BOM

本文给出了一个通过Excel模板整理一个最少内容的BOM结构.支持多层子件的关联,先在u8中生成一个完成的BOM结构,至于缺少的内容,完全可以通过批量修改(甚至于通过Excel批量生成update语句)的方式,再更新其他缺少的内容,大为降低BOM输入的工作量。用友的Bom输入过程比较繁琐,虽然有实施工具可以通过Excel生成bom.但是那个Excel需要的格式内容繁多,本质来说是给实施顾问用的,对用户来说,并不友好.,即可写入U8生成U8的BOM。bom_bom bom主档。

3787

Windows免安装记事本:解决UTF-8中文乱码与CRLF换行崩溃

记事本(Notepad)作为Windows原生文本编辑器,其编码处理机制直接影响中文显示、日志解析与跨平台文件兼容性。自Windows 10 1809起,系统默认启用更严格的UTF-8检测逻辑,导致无BOM的UTF-8文件被误判为GBK/ANSI,引发中文方块乱码;同时内部以CRLF统一存储文本的机制,造成Unix/Linux风格LF换行文件在编辑保存后‘塌陷’为单行。免安装版Notepad并非第三方工具,而是从官方系统镜像提取、数字签名完整、零依赖的原生notepad.exe封装体,通过启动参数(如/p:

weixin_34288121的博客 385

Notepad编码与换行机制深度解析:中文乱码、换行错乱的根因与修复

文本编码与换行符是跨平台开发中最基础也最易出错的技术环节。其核心原理在于字符集映射(如UTF-8、GBK)与行结束符(CRLF/LF/CR)的协同解析机制;技术价值体现在精准诊断字节级问题,避免UnicodeDecodeError等运行时异常;广泛应用于Python配置文件调试、Shell脚本跨平台兼容、CSV/JSON中文保存、运维日志分析等场景。Windows Notepad虽界面简朴,却因严格遵循BOM优先、ANSI回退、CRLF强制等确定性规则,成为识别真实编码和换行格式的‘字节显微镜’——尤其在处

weixin_28829479的博客 200

简要介绍一下utf-8下bom文件的本质、bom文件的查找(linux命令)、去bom头的方法(linux命令)

之前玩php程序的时候, 出了一个问题, 但肉眼就是看不出来, 百思不得其解。 我明明没有改动自己的php文件啊, 怎么就突然有bug了呢? 后来请教某哥, 他先查了当前php文件的格式, 怀疑是bom问题, 但当前文件是没有bom头的啊, 于是怀疑是基础的php中加入了bom头, 导致当前php有问题了, 后来果真如此, 厉害! 我在旁边看得一脸懵逼, 什么bom? 听都没听

认知 行动 坚持 1万+

UTF-8编码转换工具:解决BOM残留、混合编码与乱码溯源

UTF-8是一种广泛使用的字符编码标准,其核心在于变长字节序列对Unicode字符的无损映射;但实际工程中,因BOM标记干扰、Windows与Linux对UTF-8-BOM的兼容差异、以及GBK/GB18030等中文编码与UTF-8混用,常导致pandas读取报错、Excel显示异常、日志解析中断等典型问题。该工具聚焦编码检测→可控转换→结果验证闭环,提供BOM精准控制(remove/keep/force)、fallback编码兜底、行尾符统一等关键能力,适用于历史数据清洗、跨系统对接及非技术人员协作场景。

weixin_28835583的博客 235

换行符问题

在同样的文件内容中换行符LF和CRLF的不同可能导致文件加载过程中的出现问题:例如按行读取文件时,加载程序识别CRLF为一行内容进行加载到数据库表的操作,如果文件本身的换行符为LF,这个错误就可能导致把一个文件的所有行内容识别为一行,即加载整个文件的内容进入表,这当然时错误的。这便是文件加载设计时容易忽略掉的问题。LF在ASCII码下展示为0x0A,CRLF在ASCII码下展示为0x0D0A;LF常见于Linux下,CRLF常见于Windows下;LF意为换行,CRLF意为回车换行;

mark422的博客 343

Java解决UTF-8的BOM问题

Java解决UTF-8的BOM问题

U8 BOM 详解

描述U8 BOM的详细结构,需要的可以下载,接下去我把U8的权限整出一张清单了,常用的总共有1559项。

QT中打开Git等代码遇到CRLF与LF格式的问题及解决

摘要 Windows系统下QT工程代码因Git上传导致CRLF换行符被转换为LF格式,引发编译错误。文章介绍了CRLF与LF格式的区别及跨平台兼容性问题,推荐使用dos2unix工具进行格式转换。该工具支持换行符转换(CRLF↔LF)、字符编码转换(如UTF-16→UTF-8)及文件保护功能(保留时间戳、跳过二进制文件)。通过具体命令示例(包括递归转换目录文件)和Windows/PowerShell操作指南,帮助用户解决Git代码格式问题。最终方案采用Windows控制台递归转换策略,确保代码在Window

驯龙高手_追风的博客 828

U8 BOM快速导入脚本

U8BOM快速导入脚本,在EXCEL中编写,直接在SQL Server中导入,然后运行脚本语句完成导入BOM,整个过程速度快,不出错

LogExpert 换行符测试指南:LF、CR、CRLF 混合行结束符下的分行正确性与字节定位验证

LogExpert 作为 Windows 平台的 tail 工具与日志分析器,其流式读取器必须正确切分来自不同操作系统环境的日志文件——Unix 的 `\n`、Windows 的 `\r\n`、经典 Mac 的孤立 `\r`,甚至三者交错混合。本文以仓库中的换行符测试夹具 [LineEndings_README.md](https://link.gitcode.com/i/906ae06891c4

gitblog_01038的博客 188

10分钟训练你的AI歌手:RVC WebUI声音克隆保姆级教程

本文提供了一份详细的RVC WebUI声音克隆保姆级教程,指导用户如何在10分钟内利用Retrieval-based-Voice-Conversion技术训练专属AI歌手。教程涵盖从环境配置、数据准备、模型训练到最终推理应用的全流程,即使是新手也能快速上手,实现高质量的声音克隆与歌曲生成。

weixin_29073241的博客 821

Codesys电子凸轮从入门到应用:手把手教你用MC_CamIn/MC_CamOut实现主从轴同步

本文详细介绍了如何在Codesys平台上使用MC_CamIn和MC_CamOut功能块实现电子凸轮的主从轴同步控制。从环境配置、轴使能到凸轮表创建与动态切换,提供了完整的程序编写指南和调试技巧,帮助工程师快速掌握工业自动化中的高精度运动控制技术。

weixin_26878995的博客 277

记事本保存文件引发的三大坑:BOM、CRLF与编码故障全解析

文本文件在跨平台流转时,隐藏的字节序标记(BOM)、行尾符(CRLF)和字符编码常常成为服务异常的幕后黑手。工作中遇到的JSON解析失败、中文乱码或脚本无法执行,往往源于记事本保存时自动添加的不可见字符。理解UTF-8无BOM、LF换行等基础规范,学会用十六进制工具识别文件真实字节,能快速定位问题。本文以Node、Java、Shell三个实际案例,剖析记事本如何引发连环故障,并提供批量清理与团队防范方案。

weixin_28840143的博客 194

RoboMaster电控入门:手把手教你用STM32CubeMX配置大疆C板CAN总线驱动GM6020电机

本文详细介绍了如何使用STM32CubeMX配置大疆C板CAN总线驱动GM6020电机,适用于RoboMaster电控入门。从硬件准备到CubeMX工程初始化,再到CAN过滤器配置和电机控制协议解析,手把手教你避开常见配置陷阱,实现精准控制。

weixin_42524762的博客 269

为什么你的ChatGPT JSON总被前端报SyntaxError?OpenAI文档未明说的BOM/UTF-8-BOM/换行符3大暗坑全曝光

解决ChatGPT JSON格式处理前端报SyntaxError难题,直击BOM、UTF-8-BOM及换行符三大隐藏坑。适用于API响应解析场景,提供编码检测、预处理清洗与标准化输出方案,确保JSON严格合规。值得收藏

SimCompile的博客 229

centos7部署mysql8.0.35,主从复制,主主集群

centos7 linux部署mysql,主从复制,主主模式

zaixiaqin的博客 1990

3DGS实战避坑指南:从零搭建到成功训练

本文详细介绍了3D Gaussian Splatting(3DGS)从环境配置到成功训练的实战避坑指南。涵盖git clone的正确使用、依赖安装的隐藏陷阱、CUDA版本兼容性解决方案、首次训练验证、常见报错急救方案、性能优化技巧及可视化调试方法,帮助开发者高效搭建和训练3DGS模型。

weixin_29053383的博客 367

Nginx在Windows上报错‘123’?可能是你的配置文件编码或隐藏字符在捣鬼

本文深入分析了Nginx在Windows上报错123的常见原因,特别是配置文件编码和隐藏字符问题。详细介绍了如何排查BOM头、行尾符不一致、制表符混用等隐蔽问题,并提供了实用的解决方案和最佳实践,帮助开发者有效解决Nginx配置难题。

weixin_30333885的博客 487

FCL碰撞检测库在Windows下的编译与配置(MinGW+CMake)

本文详细介绍了在Windows系统下使用MinGW和CMake编译配置FCL碰撞检测库的完整流程。内容涵盖MinGW-w64、CMake的安装与环境配置,关键依赖库Eigen和libccd的安装,以及FCL源码的编译、安装与实战测试。重点解析了CMake配置命令中的关键参数与常见错误解决方案,旨在帮助开发者高效完成FCL在Windows平台的部署,适用于机器人、游戏物理引擎等需要精确碰撞检测的开发场景。

sunny的博客 484

Windows/Linux 文件换行符转换:5 种工具实测与 sed 避坑指南

本文详细介绍了Windows/Linux文件换行符转换的5种工具实测,包括dos2unix、tr、Vim、sed和awk,并深入剖析了sed处理Windows换行符时的典型陷阱。通过实际案例和代码示例,帮助开发者高效解决跨平台协作中的换行符问题,提升工作效率。

weixin_28829339的博客 291

高通8155车机系统里,安卓和QNX是怎么‘打电话’的?聊聊HAB通信框架那些事

本文深入解析了高通8155车机系统中HAB通信框架如何实现安卓与QNX的高效协同。作为异构系统的通信桥梁,HAB通过共享内存和中断信号机制,在多媒体数据传输中展现出零拷贝、硬件加速等优势,成为智能座舱实现实时性与生态丰富性平衡的关键技术。

weixin_42715608的博客 386

YOLOv11 改进 - 注意力机制 | EMA (Efficient Multi-Scale Attention) 高效多尺度注意力:跨空间学习与多分支协同增强特征表征,优化多尺度目标检测

本文介绍了高效多尺度注意力(EMA)模块及其在YOLOv11中的结合应用。现有注意力机制在通道维度缩减时可能影响深度视觉表示,EMA模块通过结合通道和空间信息、采用多尺度并行子网络结构等创新点,实现了高效的多尺度注意力机制。其基本原理包括通道和空间注意力结合、多尺度并行子网络设计等。在多个流行基准数据集上的实验表明,该模块能有效提高特征表示能力。我们将EMA集成进YOLOv11,实验证明改进后的模型在目标检测任务中性能优越,具有广泛应用前景

魔改工程师的博客 1297
上一篇: 关于AndroidStudio的首字母大小写敏感和自动导包的设置问题。
下一篇: linux学习小记---centos和ubuntu对于文件下载安装的区别。
androideveloper
博客等级 码龄12年 21粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值