我有一堆用 utf-8 编码的阿拉伯语、英语、俄语文件。尝试使用 Perl 脚本处理这些文件时,我收到此错误:
Malformed UTF-8 character (fatal)
手动查看这些文件的内容,发现里面有些奇怪的字符。现在我正在寻找一种方法来自动从文件中删除这些字符。
有什么办法吗?
这个命令:
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
您的方法必须逐字节阅读,并完全理解和欣赏字符的字节构造。最简单的方法是使用一个可以读取任何内容但只输出 UTF-8 字符的编辑器。文本板是一种选择。
这里或任何其他类似问题的方法都不适合我。最后,只需在 Sublime Text 2 中打开文件。转到文件 > 使用编码重新打开 > UTF-8。将文件的全部内容复制到一个新文件中并保存。
可能不是预期的解决方案,但把它放在这里以防它帮助任何人,因为我已经为此苦苦挣扎了几个小时。
cat foo.txt | strings -n 8 > bar.txt
将完成这项工作。
不定期副业成功案例分享
pbpaste | iconv -f utf-8 -t -utf-8 -c | pbcopy
。我还创建了一个带有全局快捷方式的 Alfred 工作流程,用于通过定位ascii
来去除所有特殊字符。iconv -f utf-8 -t ascii//TRANSLIT
解决了我的问题。它将花引号转换为直引号。-o
用于不同的输出文件