当前位置: 首页 > news >正文

^M 字符处理

windows用的是\r\n来做分行的linux是\n

一、文本格式转换中的^M符号

  1. 跨平台文本文件

    • 当在Windows系统下编辑的文本文件被转移到Unix/Linux系统下打开时,由于Windows系统使用CR+LF(\r\n)作为行结束符,而Unix/Linux系统使用LF(\n)作为行结束符,因此可能会出现M这种特殊形式出现。
  2. 文本编辑器设置

    • 在某些文本编辑器(如Vim)中,如果编辑器被配置为识别Unix格式的文件,但打开的文件实际上是Dos格式的(即使用CR+LF作为行结束符),那么编辑器可能会将CR字符显示为^M。

二、历史和技术背景

  1. 打字机时代

    • 在计算机诞生之前,打字机使用两个字符来开始一个新行:首先是回车(CR),将打印头移回行首;然后是换行(LF),将纸张向上移动一行。这两个动作分别对应着\r和\n字符。
  2. 计算机存储

    • 在计算机存储成本高昂的年代,为了节省存储空间,一些系统(如MS-DOS和早期的Windows)选择了沿用打字机的回车换行传统,使用CR+LF作为行结束符。
  3. 编辑器识别

    • 现代文本编辑器(如Vim)通常能够识别并处理不同格式的行结束符。但是,如果编辑器的设置与文件的实际格式不匹配,就可能会出现^M这样的特殊表示。

三、解决方法

  1. 修改编辑器设置

    • 在Vim中,可以通过设置fileformats选项来指定编辑器能够自动识别的文件格式集合。例如,将fileformats设置为unix,dos,这样Vim就可以自动识别并处理Unix和Dos格式的文件了。
  2. 使用转换工具

    • 可以使用如dos2unix这样的工具将Windows下的文本文件转换成符合Unix/Linux系统要求的文件。
  3. 手动替换

    • 在文本编辑器中,可以使用全局替换功能将^M符号(实际上是CR字符)替换掉。在Vim中,可以使用:%s/\r//g这样的命令来全局替换CR字符。
  4. dos2unix <文件名>
  5. 读取后做最后一个字符的值判断处理

综上所述,^M符号主要在跨平台文本文件传输和编辑器设置不匹配时生成。了解这一点有助于我们更好地处理文本文件中的行结束符问题。

http://www.lryc.cn/news/474066.html

相关文章:

  • vxe-table v4.8+ 与 v3.10+ 虚拟滚动支持动态行高,虚拟渲染更快了
  • 【新闻文本分类识别】Python+CNN卷积神经网络算法+深度学习+人工智能+机器学习+文本处理
  • 算法效率的计算
  • 迷茫内耗的一天
  • 【android12】【AHandler】【4.AHandler原理篇ALooper类方法全解】
  • 在canon的生活
  • 萤石设备视频接入平台EasyCVR私有化部署视频平台高速公路视频上云的高效解决方案
  • 如何解决docker镜像下载失败问题
  • Python_PyCharm无法打开终端命令行最终解决方案(实测)
  • 若依-侧边栏开关按钮禁用,侧边栏始终保持展开
  • 洛雪音乐 1.6.1| 全网音乐免费听,附加音源
  • 进程(Process)、线程(Thread)和协程(Coroutine)
  • 蓝牙 BLE 详解
  • Spring 获取Header
  • 第8课 字符串
  • 告别繁琐统计,一键掌握微信数据
  • 企业出海网络:SD-WAN与专线混合组网方案
  • 胡壮麟《语言学教程》第五版PDF英文版+中文版翻译
  • DriftingBlues: 1渗透测试
  • 分类算法——决策树 详解
  • C# 编程基础:深入解析构造函数与析构函数
  • 中国大学慕课视频资源分析
  • 简单的kafkaredis学习之redis
  • 前端性能优化全攻略:提升用户体验,加速页面加载
  • 手机玩亚托莉:我挚爱的时光!手机推gal、躺床玩漫改gal教程
  • metasploit/modules/evasion 有哪些模块,以及具体使用案例
  • 网络安全入门文档-虚拟机配置篇
  • class 041 最大公约数、同余原理
  • token的创建与解析,并配合拦截器使用
  • Oracle 数据库历史备份数据恢复验证