web-dev-qa-db-ja.com

Windows-1250およびUTF-8としてエンコードされたテキストファイルの操作

UbuntuとWindowsを頻繁に切り替えるため、テキストファイルでエンコードの問題が発生します。

Ubuntuでテキストファイルを保存すると、両方のシステムですべて正常に動作します。しかし、UbuntuはWindowsで保存されたファイルのエンコードを検出しません。 Ubuntuテキストエディターで「windowsファイル」を開くたびに、エンコードオプションを変更する必要があります。

ソリューションは、エンコードをWindows-1250からutf-8に変更しています。

したがって、問題は、現在のディレクトリのサブディレクトリ内のすべてのファイルに対して、Windows-1250で各ファイルを開き、utf-8で保存する方法です(再帰的に意味します)。ターミナルで実行できますか、外部アプリケーションが必要です。

あなたの助けを楽しみにしています。

5
dagi12

これには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)に変更して、事後の変換を行わないようにすることをお勧めします。


CRキャリッジリターン\r)を意味する
LF改行\n)を意味します

Windowsは両方を使用しますが、UNIXライクなシステムはLFのみを使用します。

8
geirha

Sublime Textを使用すると、異なるファイルエンコーディングでの保存が非常に簡単になります。異なるエンコーディングで再度開いて複数のファイルを操作することもできます。詳細については、この answer を確認してください。

0
Bretsko