【问题标题】:Merging text files with different character encodings合并具有不同字符编码的文本文件
【发布时间】:2016-01-19 07:26:33
【问题描述】:
我正在尝试将目录中文本文件的内容合并到一个文本文件中。
有些文本文件用 ANSI 编码,有些用 UTF-8 编码,有些用 UTF-8 编码,带有 BOM 和其他字符编码。
我尝试与类型和复制命令合并,但结果文件会包含奇怪的字符。例如,“ö”变成“ö”。其他欧洲/重音字母也搞砸了。此外,有些行以“”开头,经过一番调查,实际上是不可见的 BOM 字符。
如何将这些文本文件合并为一个保留其可读形式的文件?我愿意接受 Windows CMD 之外的建议。
【问题讨论】:
标签:
windows
text
unicode
cmd
character-encoding
【解决方案1】:
您不能盲目地合并文件。如果您知道哪些文件是哪些编码,那么您可以使用工具在合并之前将它们重新编码为通用表示,例如 UTF-8。例如,在 Python 3.x 中,这会将四个不同编码的文件连接成一个通用的 UTF-8 编码文件(未经测试):
#!python3
files = [('file1.txt','cp1252'),
('file2.txt','utf8'),
('file3.txt','utf-8-sig'),
('file4.txt','chinese')]
with open('output.txt','w',encoding='utf8') as out:
for filename,encoding in files:
with open(filename,encoding=encoding) as f:
out.write(f.read())