Linux在网络服务器、嵌入式设备的市场上占有较大份额,Microsoft Windows在桌面操作系统上占有较大的份额,因此有很多的人喜欢用Windows去控制操作Linux。

既然用Windows去控制Linux,难免导致Windows系统上的产生的文件以某种途径传到了Linux系统中,因而导致显示问题或者出现乱码的情况。

例如用Windows自带的“记事本”(notepad)程序默认保存的文件会在每一行的结尾处带有^M标记。

PS: 一些常见的错误例子:有的人可能有疑问,为什么我用记事本把文件保存成UTF-8也不好用。还有的人在执行“sed -i '/^$/d' filename”时发现明明有空格却没有删除。

因此在日常使用过程中,无论是用什么工具编辑文件上传到Linux服务器,都需要注意换行符问题。

现象:

1.cat程序显示有问题

如文件的开头显示“?t”

2.bash、python等文件执行时报错

如-bash: ./someshname.sh: /bin/bash^M: bad interpreter: No such file or directory

但是这种情况如果不想转换换行符,可以直接用相应的解释器去执行这个文件,如/bin/bash ./someshname.sh

3.其他应用程序如php、java等运行时报错

解释:

换行符(newline、line ending、end of line(eol)或line break),是一种控制字符,用于区分表示每一行的结束。换行符通常由line feed (LF)和carriage return (CR)两者中的一种或者它们的组合出现在计算机系统中,常见的换行符有三种:LF (UNIX and OS X \n)

CR (Classic Mac \r)

CRLF(Windows \r\n)

LF是Line Feed的缩写,CR是Carriage Return的缩写,他们的控制字符(\r,\n还是\r\n)由对应的ANSCII表示。

之所以出现“^M ”是因为^M在ANSCII中就表示Carriage Return即\r所以如果在Linux的某个打印输出中出现了^M,表示换行符是Windows格式的。

BOM是Byte order mark的缩写,释义为“字节顺序标记”,用于明确表明此文件属于Unicode编码,其他的一些作用可以参考维基百科的英文页面(显然中文页面解释的不全面)。

解决办法:

这个问题其实简单到没有必要用一篇文章的篇幅来表述,简答说就一句话:可以借助dos2unix 工具,将Windows格式的文本文件转化成Linux下可用的格式。但为了方便那些需要详细了解的人,特地多写几句如下。

# Remove BOM and ^M (BOM and ^M can come from Windows notepad program and save as 'ANSI' or 'UTF-8')

# such as "example^M$", ANSI, ASCII text, with CRLF line terminators

# such as "M-oM-;M-?example^M$", UTF-8, UTF-8 Unicode (with BOM) text, with CRLF line terminators

# Linux right format is "example$", ASCII text

# other method is using vim [noeol][dos] :set ff=unix

# determine file typefile testfilename

# display $ at end of each line, display TAB characters as ^I, use ^ and M- notation, except for LFD and TABocat -A testfilename

#Text file format converters. Convert text files with DOS or Mac line endings to Unix line endings and vice versa.

# Debian & Ubuntu: apt-get install dos2unix

# RHEL & CentOS: yum install dos2unix

# DOS/Mac to Unix and vice versa text file format converterdos2unix testfilename

关于显示乱码问题

1.有可能跟终端(SSH连接工具)有关系,尝试调整字符编码为utf-8

2.有可能是系统原因,如缺少中文支持

一些可用的参考:

tag:bad interpreter,移除BOM,dos2unix命令,CRLF,Linux换行符

--end--

java处理linux中的 m_Linux下处理BOM头和^M的简单方法相关推荐

  1. Linux下处理BOM头和^M的简单方法

    Linux在网络服务器.嵌入式设备的市场上占有较大份额,Microsoft Windows在桌面操作系统上占有较大的份额,因此有很多的人喜欢用Windows去控制操作Linux. 既然用Windows ...

  2. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  3. Linux中/proc目录下文件详解(二)

    Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...

  4. 【问题解决方案】Linux中进入目录下文件夹

    [问题解决方案]Linux中进入目录下文件夹 参考文章: (1)[问题解决方案]Linux中进入目录下文件夹 (2)https://www.cnblogs.com/anliux/p/11486540. ...

  5. Linux中/proc目录下文件详解 /proc/devices文件 /proc/modules文件

    http://blog.chinaunix.net/uid-10449864-id-2956854.html 原来对linux系统中的/proc目录不是很了解,只知道可以查看cpu,内存等相关的信息, ...

  6. linux在当前目录下创建pic目录,Linux中/proc目录下文件详解

    文章转自: Linux中/proc目录下文件详解(一) ------------------------------------------------------------------------ ...

  7. Linux中/proc目录下文件详解(zt)

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  8. Linux 中ifconfig和ip addr命令查看不到ip解决方法

    Linux 中ifconfig和ip addr命令查看不到ip解决方法 参考文章: (1)Linux 中ifconfig和ip addr命令查看不到ip解决方法 (2)https://www.cnbl ...

  9. 【Linux笔记】CentOS下找不到eth0设备的解决方法

    [Linux笔记]CentOS下找不到eth0设备的解决方法 参考文章: (1)[Linux笔记]CentOS下找不到eth0设备的解决方法 (2)https://www.cnblogs.com/ly ...

最新文章

  1. 机器学习入门(08)— 损失函数作用和分类(均方误差、交叉熵误差)
  2. 安装Live communication server 2005存档服务
  3. ABAP程序系统字段中英文详解
  4. github/gitlab同时管理多个ssh key
  5. 安装python无法启动_终端里为什么无法运行python?
  6. KAFKA 最新版 单机安装、配置、部署(linux环境)
  7. Linux学习总结(31)——工作中常用的Linux脚本和命令
  8. python高级编程总结
  9. H+ HPlus创建新的标签页/选项卡
  10. java 协同过滤算法_推荐系统中协同过滤算法实现分析
  11. 计算性和复杂度理论2
  12. shell脚本批量处理ping IP测试
  13. 国家气象局提供的天气预报接口
  14. html导出带页码的word,使用js把html导出word,并配置样式和分页功能
  15. latex初学者的经验
  16. css控制文本的行高
  17. 设一棵树T的度为4,其中度为1,2,3,4的结点个数分别为4,2,1,1。则T中的叶子结点为
  18. 有限体积法、有限差分法和有限元法介绍
  19. 一些比赛的题解(共32场)
  20. AE绘图工具与常用动效制作

热门文章

  1. 没有可用软件包 jenkins。_Jenkins分布式构建与并行构建
  2. 适合文科女孩子学的计算机类专业,文科女生最吃香的专业2021 哪些专业有前景...
  3. 文档根元素 project 必须匹配 doctype 根 null_快评:全新MG5上市6.49万起,但买它必须准备10万?...
  4. pdf温度记录仪开发_蔬菜、鲜果、奶制品冷链温度监控系统监控食品让客户放心...
  5. Tecplot如何导入多个DAT文件后激活solution time按钮
  6. java中软填空面试题,通过这9个Java面试题,就可以入职华为啦
  7. asterisk1.8 拨号方案 mysql存储(动态)
  8. airtest web 录制滑块_Airtest之web自动化(一)
  9. 遇见王沥川的人生感悟_23岁酱油泡饭默默无闻,31岁逆袭人生,王彦霖有何魅力?...
  10. mysql的每隔1分钟定时_mysql定时任务