如何从文本文件中删除非UTF-8字符

时间:2012-10-21 16:16:55

标签: linux bash text utf-8 character-encoding

我有一堆阿拉伯语,英语,俄语文件,用utf-8编码。尝试使用Perl脚本处理这些文件,我收到此错误:

Malformed UTF-8 character (fatal)

手动检查这些文件的内容,我发现其中有一些奇怪的字符。 现在我正在寻找一种从文件中自动删除这些字符的方法。

无论如何都要这样做?

3 个答案:

答案 0 :(得分:137)

此命令:

iconv -f utf-8 -t utf-8 -c file.txt

将清除您的UTF-8文件,跳过所有无效字符。

-f is the source format
-t the target format
-c skips any invalid sequence

答案 1 :(得分:0)

您的方法必须逐字节读取并完全理解并理解字符的字节构造。最简单的方法是使用一个编辑器,它将读取任何内容但只输出UTF-8字符。 Textpad是一种选择。

答案 2 :(得分:-4)

cat foo.txt | strings -n 8 > bar.txt

将完成这项工作。