【发布时间】:2015-01-22 03:46:18
【问题描述】:
我有一个使用 UTF-8(无 BOM)编码的文件。文件正在 Windows 站点上创建,并通过 SFTP 传输到 Linux 服务器。在上面使用cat -e,我得到这样的东西:
cat -e file.txt
M-oM-;M-?test13;hbana0Kw;$
lala;LjgX$
现在,我知道M-oM-;M-? 代表 UTF-8(无 BOM)。有没有办法从文件中删除它但保留它的编码?
【问题讨论】:
-
如果它不是 BOM,它是实际的字符数据,如果不更改文件的实际内容,就无法删除。但是,在我看来,它就像一个 BOM。
cut -b1-3 file | od -ch的输出是什么? -
嗨,我是
0000000 357 273 277 \n l a l \n bbef 0abf 616c 0a6c 0000010 -
所以这是一个字节切换的 BOM,也就是 ZERO-WIDTH NO-BREAK SPACE。 (
od的输出是 little-endian 格式,进一步混淆了问题。) -
太好了,所以我弄错了它是什么。现在,有没有办法从 Linux 端删除它,或者我应该尝试在 Windows 站点上删除它?
-
sed -e '1s/^.//' file.txt