处理编码为 Windows-1250 和 UTF-8 的文本文件

处理编码为 Windows-1250 和 UTF-8 的文本文件

我经常在 Ubuntu 和 Windows 之间切换,因此在文本文件编码方面遇到了一些问题。

如果我在 Ubuntu 中保存文本文件,则两个系统都可以正常工作。但 Ubuntu 无法发现使用 Windows 保存的文件的编码。每次我在 Ubuntu 文本编辑器中打开“windows 文件”时,我都必须更改编码选项。

解决方案是将编码从 Windows-1250 更改为 utf-8。

因此,问题是如何使用 Windows-1250 打开每个文件并使用 utf-8 保存,对于当前目录的子目录中的每个文件(我的意思是递归)。我可以在终端中执行此操作吗?还是我需要一些外部应用程序。

我期待您的帮助。

答案1

我更喜欢使用recode它。它不是默认安装的,但可以通过同名包使用。它还将 CRLF 行尾更改为 LF。

sudo apt-get install recode
recode cp1250.. file.txt

您可以对整个目录中的所有 txt 文件执行此操作

recode cp1250.. ./*.txt

并递归地结合find

find . -type f -name "*.txt" -exec recode cp1250.. {} +

标准选项是使用iconv默认安装的命令,但这不会改变行尾,因此您需要在另一个步骤中执行此操作:

iconv -f cp1250 < file.txt | sed $'s/\r$//' > newfile.txt

从长远来看,我建议将 Windows 编辑器的默认字符集和行尾更改为 UTF-8 和 UNIX 行尾(LF,\n),以避免事后进行转换。


碳排放方法回车符\r
如果方法换行\n

Windows 系统同时使用这两种方法,但类 Unix 系统仅使用如果

答案2

Sublime Text 可以非常轻松地将文件保存为不同的编码。您还可以使用不同的编码重新打开并处理多个文件,请查看此处回答更多细节。

相关内容