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

Hak*_*kim 76 linux bash text utf-8 character-encoding

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

Malformed UTF-8 character (fatal)
Run Code Online (Sandbox Code Playgroud)

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

无论如何要做到这一点?

Pal*_*tir 142

这个命令:

iconv -f utf-8 -t utf-8 -c file.txt
Run Code Online (Sandbox Code Playgroud)

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

-f is the source format
-t the target format
-c skips any invalid sequence
Run Code Online (Sandbox Code Playgroud)

  • Mac上的"iconv -f utf-8 -t utf-8 -c file.txt".'f'和'8'之间的连字符 (10认同)
  • `iconv -f utf-8 -t ascii // TRANSLIT`解决了我的问题.它将曲线引号转换为直引号. (3认同)
  • `-o`用于不同的输出文件 (3认同)

小智 0

iconv 可以做到

iconv -f cp1252 foo.txt
Run Code Online (Sandbox Code Playgroud)