linux下 vi中[noeol]以及出现 feff 的问题
"uptime.py" [noeol] 69L, 2311C
"system/uptime.py" 69L, 2312C
'noeol' 就是 'no end-of-line', 即“没有行末结束符”
使用cat -A 命令可以看到两个文件的不同之处在于最后一行是否有换行符
cat -A uptime.py
if __name__ == '__main__':$
uptime = uptime()$
print(uptime)$
root@UA4300D-spa:~/hanhuakai/pro_07/git_0709/ssapi#
cat -A system/uptime.py
if __name__ == '__main__':$
uptime = uptime()$
print(uptime)root@UA4300D-spa:~/hanhuakai/pro_07/git_0709/ssapi#
由于linux下vi无法直接写入中文注释,所以只能在windows下将写好注释的代码传到linux服务器上,但是问题也就出现了,我在 windows下用的是Notepad++这款编辑器(感觉还挺不错,有语法高亮识别)编辑源代码的,加过注释后上传到linux上无论什么语言环境 (LANG)都是乱码,然后看了一下Notepad++的设置,发现默认为ANSI格式,于是就转换为UTF-8格式编码(因为linux里有这个格式的 嘛),然后再上传到linux服务器上,linux也设为UTF-8语言环境,可以看到中文注释了!但是发现每个文件第一行都会有 “<feff>”这个字符串。google了下发现问题的所在了。
原来这是个被称作BOM(Byte Order Mark)的不可见字符,是Unicode用来标识内部编码的排列方式的,在UTF-16、UTF-32编码里它是必需的,而在UTF-8里是可选的。因 此,才会出现有的编辑器在文件头部添加添加BOM、而有的语法解析器又不作处理的的混乱情况。所谓 BOM,全称是Byte Order Mark,它是一个Unicode字符,通常出现在文本的开头,用来标识字节序 (Big/Little Endian),除此以外还可以标识编码(UTF-8/16/32),如果出现在文本中间,则解释为zero width no-break space。
这个BOM可以在编辑文本时设置的,但是,只能在第一次编辑时才能设置它为bomb还是nobomb,编辑完并保存后就无法再更改编码格式了。有关bomb命令:
#设置UTF-8编码
:set fileencoding=utf-8
#添加BOM
:set bomb
#删除BOM
:set nobomb
#查询BOM
:set bomb?
如下例子:
用vi编辑一个测试文本test.txt
- test bomb or nobomb
- ~
- ~
- ~
- ~
- ~
- ~
- ~
- ~
- ~
查询BOM结果:(set bomb ?)
- ~
- ~
- ~
- ~
- ~
- nobomb
更改BOM结果:(set bomb)
- ~
- ~
- ~
- ~
- ~
- ~
- bomb
保存后再次打开就会发现如下图所示:

而且我们对于上传过来的源代码没法做修改,网上有人说可以删除BOM(grep -I -r -l $'\xEF\xBB\xBF' * |
xargs sed -i 's/^\xEF\xBB\xBF//;'),我试过了不行,不知哪位大牛指点下?检查文件中是否含BOM的命令为:
- grep -I -r -l $'\xEF\xBB\xBF' *
这个命令是有效的。
既然没法靠在linux下有什么命令删除BOM,那咱们只能从源头处理了,编码更改为无BOM的UTF-8编码格式。Notepad++有转换此格式的选项:

转换过后保存下然后再传到linux服务器上,问题就解决了!!
另:这个问题在sun环境和Hp环境下没有此问题,我不清楚如果忽略这个问题在编译时或程序运行时是否会产生异常,网上有人反映是有的,所以还是建议麻烦些也不要忽略此问题,谁晓得它会惹出什么麻烦呢
-- 转自 http://blog.csdn.net/lyn_bigdream/article/details/8746241
linux下 vi中[noeol]以及出现 feff 的问题的更多相关文章
- linux 下vi中关于删除某段,某行,或者全部删除的命令
1,先打开某个文件: vi filename 2,转到文件结尾 在命令模式输入 G 转到10行 在命令模式输入 10G 4,删除所有内容:先用G 转到文件尾,然后使用下面命令: :1, ...
- Linux下vi编辑器粘贴复制剪切功能
RedHat 9.0 Linux下vi编辑器实现简单的粘贴复制剪切功能": 如果想把文件内的第三行内容黏贴到第十五行: 1.进入你的文件,(处于命令模式,而不是编辑模式) 2.将你的光标移到 ...
- Linux 下 Vi 配置文件 .vimrc 文件
Linux 下 Vi 配置文件 .vimrc 文件 配置 vim 的方法是在用户主目录下建立个.vimrc文件,我一般使用root帐户,所以就在/root/下建立一个.vimrc文件:vi /root ...
- 将自己的SpringBoot应用打包发布到Linux下Docker中
目录 将自己的SpringBoot应用打包发布到Linux下Docker中 1. 环境介绍 2. 开始前的准备 2.1 开启docker远程连接 2.2 新建SpringBoot项目 3. 开始构建我 ...
- Linux下vi替换字符命令操作实例
在Linux下的开发中,经常涉及到对文件里的字符进行处理,当中,对字符的替换操作也是非常的频繁. 本文以一个实际的文件为例,具体介绍了Linux下经常使用的vi替换字符命令,为相关的开发工作提供给了參 ...
- dos2unix,去掉Linux下文件中的^M
Windows系统下使用VS2010编写好的CPP文件,想放到Linux上进行编译.发现Linux上文件中的每行代码末尾都跟着^M这个符号. 为什么同一份文件在windows上和Linux上显示的不一 ...
- 详解Linux下iptables中的DNAT与SNAT设置(转)
详解Linux下iptables中的DNAT与SNAT设置 这篇文章主要介绍了Linux下iptables中的DNAT与SNAT设置,是Linux网络配置中的基础知识,需要的朋友可以参考下 原文连 ...
- Linux下Oracle中SqlPlus时上下左右键乱码问题的解决办法
window下的sqlplus可以通过箭头键,来回看历史命令,用起来非常的方便. 但是在Linux下,会出现各种乱码,非常不方便,如下图所示,每次打错一个字符就需要重新打一遍. 解决办法:rlwrap ...
- [转] linux下shell中使用上下键翻出历史命名时出现^[[A^[[A^[[A^[[B^[[B的问题解决,Linux使用退格键时出现^H解决方法
[From] https://www.zmrbk.com/post-2030.html https://blog.csdn.net/suifengshiyu/article/details/40952 ...
随机推荐
- Kafka Streams演示程序
本文从以下六个方面详细介绍Kafka Streams的演示程序: Step 1: 下载代码 Step 2: 启动kafka服务 Step 3: 准备输入topic并启动Kafka生产者 Step 4: ...
- Maximum execution time of 30 seconds exceeded解决办法
Maximum execution time of 30 seconds exceeded,今天把这个错误的解决方案总结一下: 简单总结一下解决办法: 报错一:内存超限,具体报错语句忘了,简单说一下解 ...
- Python2中编码错误---éç»äººè¡¨ç®çé¿å ååè¶(æå格式转化为UTF-8
在python2的使用中,总会遇到各种各样的编码问题,这也是使用Python2最头疼的一件事情,幸好python3解决了编码的问题. 下面我在爬虫时遇到的类似éç»äººè¡¨ç®çé¿ ...
- [转]matlab语言中的assert断言函数
MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matlab ...
- Openstack keystone组件详解
OpenStack Keystone Keystone(OpenStack Identity Service)是 OpenStack 框架中负责管理身份验证.服务规则和服务令牌功能的模块.用户访问资源 ...
- P1807 最长路_NOI导刊2010提高(07)
题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入输出 ...
- 注解失效,@SpringBootApplication 失效,引入包失效
因为同时修改两个springboot工程,其中把一个工程的版本调整到2.0.2.RELEASE,然后坑爹的事情出现了,所有springboot工程的@SpringBootApplication失效, ...
- 洛谷 P2323 [HNOI2006]公路修建问题 解题报告
P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ...
- React组件通信
1.父子通信 父 -> 子 props子 -> 父 回调函数,父组件通过props向子组件传递一个函数,子组件调用函数,父组件在回调函数中用setState改变自身状态 2.跨层级通信 1 ...
- 【数论数学】【P2152】【SDOI2009】Super GCD
传送门 Description Sheng bill有着惊人的心算能力,甚至能用大脑计算出两个巨大的数的GCD(最大公约 数)!因此他经常和别人比赛计算GCD.有一天Sheng bill很嚣张地找到了 ...