![粘贴命令是否可以正确地将两个 unicode 文件并排放置而不重复任何 unicode BOM?](https://linux22.com/image/1548289/%E7%B2%98%E8%B4%B4%E5%91%BD%E4%BB%A4%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%AD%A3%E7%A1%AE%E5%9C%B0%E5%B0%86%E4%B8%A4%E4%B8%AA%20unicode%20%E6%96%87%E4%BB%B6%E5%B9%B6%E6%8E%92%E6%94%BE%E7%BD%AE%E8%80%8C%E4%B8%8D%E9%87%8D%E5%A4%8D%E4%BB%BB%E4%BD%95%20unicode%20BOM%EF%BC%9F.png)
这是我正在使用的粘贴版本。
C:\cygwin\bin>.\paste.exe --version
paste (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.
This is free software: you are free to change and redis
There is NO WARRANTY, to the extent permitted by law.
Written by David M. Ihnat and David MacKenzie.
C:\cygwin\bin>
我不确定它是否是最新的,因为我没有看到此处列出的粘贴内容,我想我应该在这里进行更新
但是我在 cygwin 中安装了粘贴命令。
但它不起作用..它插入了额外的字符
xxd -p 是显示十六进制的命令。
file1.txt 和 file2.txt 是两个 UTF-8 文件
C:\cro\a>file file1.txt file1.txt: UTF-8 Unicode (with BOM) text, with no line terminators C:\cro\a>file file2.txt file2.txt: UTF-8 Unicode (with BOM) text, with no line terminators
file1.txt 具有 utf-8 bom 的代码,即 EFBBBF 后跟字母“aaa”的十六进制。file2 包含文本 bbb。
C:\cro\a>xxd -p file1.txt efbbbf616161 C:\cro\a>xxd -p file2.txt efbbbf626262
我们在这里看到了。不用担心,´╗┐
这只是 cmd 试图显示 UTF-8 BOM。这不是我遇到的问题。
C:\cro\a>type file1.txt ´╗┐aaa C:\cro\a> C:\cro\a>type file2.txt ´╗┐bbb C:\cro\a>
问题是,当我使用粘贴命令尝试将 file1 和 file2 并排放置时,正如您在十六进制中看到的,它重复了 unicode bom(efbbbf),但事实并非如此。
C:\cro\a>paste file1 file2 >a.a paste: file1: No such file or directory C:\cro\a>paste file1.txt file2.txt >a.a C:\cro\a>type a.a ´╗┐aaa ´╗┐bbb C:\cro\a>xxd -p a.a efbbbf61616109efbbbf6262620a C:\cro\a>
有没有适用于 Windows 的 paste 的更高版本,不会出现这种情况?或者即使在最新的 Linux 版本的 paste 中也存在此问题。有办法解决吗?
同时,在使用粘贴之前,我将对不带 BOM 的 utf-8 文件进行编码。
答案1
过去属于 coreutils。
您可以使用网站上的搜索 https://cygwin.com/cgi-bin2/package-cat.cgi?file=x86_64%2Fcoreutils%2Fcoreutils-8.26-2&grep=bin%2Fpaste
或者cygcheck -p bin/paste
当然,如果您有两个 BOM,它并不关心编码,那么您将会有一个重复。