linux下写文件出现问题?

hzy694358 2011-09-01 07:05:54
描述:
Windows下创建的UTF8文件A(带BOM:EF BB BF),上传到linux下
用vim打开,正常,然后我读取该文件的内容,写入到另一个文件B(默认UTF8)
此时vim打开会在文件的开头出现字符<feff>标识,但是奇怪的是,我将B文件
下载到Windows下,用UE打开,发现也开头也只有EF BB BF。并没有多余的其他字符。
如果在vim里将<feff>删掉,再下载到Windows,则变成了无BOM的utf8文件了

为什么Windows创建的UTF8 BOM传到linux不会出现这种情况,而我写入的BOM则会出现<feff>。

求解 ……
...全文
2229 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylfjida2009 2014-05-22
  • 打赏
  • 举报
回复
将文件另存为UTF-8 无BOM编码就行啦,可以用Notepad++设置编码。
ylfjida2009 2014-05-22
  • 打赏
  • 举报
回复
请问如何解决?
limang89 2011-09-03
  • 打赏
  • 举报
回复
路过 顶下。。。
0153 2011-09-02
  • 打赏
  • 举报
回复
汗,<feff>就是EF BB BF的UNICODE形式啊,一删自然把BOM头删了。
另外feff和fffe是指UNICODE字节序,一般LSB下是feff,MSB下是fffe。
hzy694358 2011-09-02
  • 打赏
  • 举报
回复
fwrite写入,在写入之前我有把字串的钱三个字符打印出来
确实是EF BB BF

可是写完后,vim 打开,文件开头变成了<feff>

<feff> 是表示什么意思:
hzy694358 2011-09-02
  • 打赏
  • 举报
回复
发现原因了:
原来是在文件中同时存在\r\n 和\n 两种换行符的话就会出现问题,
如果都是\r\n 或者都是\n 就不会出现那种情况了

真是狗血哦
mymtom 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hzy694358 的回复:]

引用 4 楼 0153 的回复:

汗,<feff>就是EF BB BF的UNICODE形式啊,一删自然把BOM头删了。
另外feff和fffe是指UNICODE字节序,一般LSB下是feff,MSB下是fffe。

那我在Windows下创建的带BOM的UTF8文件传到linux下
vim打开并不存在<feff> 这作何解释
[/Quote]
自己的程序写文件?
hzy694358 2011-09-02
  • 打赏
  • 举报
回复
求解释求解释求解释求解释
hzy694358 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 0153 的回复:]

汗,<feff>就是EF BB BF的UNICODE形式啊,一删自然把BOM头删了。
另外feff和fffe是指UNICODE字节序,一般LSB下是feff,MSB下是fffe。
[/Quote]
那我在Windows下创建的带BOM的UTF8文件传到linux下
vim打开并不存在<feff> 这作何解释
xunxun 2011-09-01
  • 打赏
  • 举报
回复
有什么地方改了吧

是怎么读入写入的呢

前后对比一下
jackyjkchen 2011-09-01
  • 打赏
  • 举报
回复
你确定二者的二进制完全一样一字不差?

算下md5sum,或者做个文件对比

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧