微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将Windows命令提示符中的文件和字符串“”

如何解决将Windows命令提示符中的文件和字符串“”

我正在使用Windows串联文件。我使用了TYPE和copY命令,并且得到了相同的工件。在将原始文件合并到新文件的位置,插入了字符串“”(即十进制:139 175 168十六进制:8BAFA8)。

如何解决此问题?您可以提供一个简单的解释来避免这种情况。为什么会这样?

解决方法

额外的字节是UTF-8编码签名。 Unicode字节顺序标记U + FEFF以UTF-8编码,并写入文件的开头,以指示文件以UTF-8编码。并非必需,但是Windows假定文本文件以本地ANSI编码(通常为Windows-1252)编码,除非出现BOM。

许多文件工具对此一无所知(DOS副本就是其中之一),因此串联文件可能很麻烦。

如今,对编码一无所知常常会带来麻烦。您不能简单地串联两个编码未知的文本文件,它们可能会不同。

如果您知道编码,请使用了解编码的工具。这是一个用Python编写的非常基本串联脚本,也可以转换编码。

# cat.py
import sys

if len(sys.argv) < 5:
    print('usage: cat <in_encoding> <out_encoding> <outfile> <infile> [infile...]')
else:  
    with open(sys.argv[3],'w',encoding=sys.argv[2]) as fout:
        for file in sys.argv[4:]:
            with open(file,'r',encoding=sys.argv[1]) as fin:
                fout.write(fin.read())

给出两个带有UTF-8(带有BOM编码)的文件,此命令将输出UTF-8(不包含BOM):

cat.py utf-8-sig utf-8 out.txt test1.txt test2.txt

关于Python的旁注:utf-8-sig编码读取文件并从数据(如果存在)中删除BOM,因此它可以用于读取任何带或不带BOM的UTF-8文件。 utf-8-sig编码在文件的开头写入 BOM,但utf-8不会。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。