文字セット間でテキストファイルを変換するための最速、最も簡単なツールや方法は何ですか?
具体的には、私はUTF-8からISO-8859-15に、またその逆に変換する必要があります。
好きなスクリプト言語のワンライナー、OS用のコマンドラインツールやその他のユーティリティ、Webサイトなど。
Linux/UNIX/OS X/cygwinの場合
Troels Arvin によって提案されたGnu iconv が最も使用されます フィルタとして 。それは普遍的に利用可能であるようです。例:
$ iconv -f UTF-8 -t ISO-8859-15 in.txt > out.txt
Ben で指摘されているように、 iconvを使ったオンラインコンバータ があります。
Cheekysoft によって提案されたGnu recode ( manual )は変換します 1つまたは複数のファイルをインプレース 。例:
$ recode UTF8..ISO-8859-15 in.txt
これは短いエイリアスを使用します。
$ recode utf8..l9 in.txt
Recodeは surface もサポートしています。これは、異なる行末タイプとエンコーディングの間の変換に使用できます。
改行をLF(Unix)からCR-LF(DOS)に変換します。
$ recode ../CR-LF in.txt
Base64エンコードファイル:
$ recode ../Base64 in.txt
それらを組み合わせることもできます。
Unixの行末を持つBase64エンコードUTF8ファイルを、DOSの行末を持つBase64エンコードLatin 1ファイルに変換します。
$ recode utf8/Base64..l1/CR-LF/Base64 file.txt
Powershell (({ Jay Bazuzi )を指定したWindowsの場合)
PS C:\> gc -en utf8 in.txt | Out-File -en ascii out.txt
(ISO-8859-15はサポートされていません。サポートされている文字セットはUnicode、utf7、utf8、utf32、ascii、bigendianunicode、default、およびoemです。)
Iso-8859-1をサポートしていますか? "String"を使用するとこれが可能になります。その逆
gc -en string in.txt | Out-File -en utf8 out.txt
注:可能な列挙値は「不明、文字列、Unicode、Byte、BigEndianUnicode、UTF 8、UTF 7、ASCII」です。
スタンドアロンユーティリティ approach
iconv -f ISO-8859-1 -t UTF-8 in.txt > out.txt
-f ENCODING the encoding of the input
-t ENCODING the encoding of the output
どちらの引数も指定する必要はありません。デフォルトは現在のロケールになります。通常はUTF-8です。
vim
があればこれを使うことができます:
すべてのエンコードに対してテストされているわけではありません。
これについてのクールな部分は、あなたがソースエンコーディングを知る必要がないということです。
vim +"set nobomb | set fenc=utf8 | x" filename.txt
このコマンドはファイルを直接変更します。
+
:ファイルを開くときに直接コマンドを入力するためにvimによって使用されます。通常、特定の行でファイルを開くのに使用します。vim +14 file.txt
|
:複数のコマンドの区切り文字(bashの;
のように)set nobomb
:いいえutf-8 BOMset fenc=utf8
:新しいエンコーディングをutf-8に設定します doc linkx
:ファイルを保存して閉じるfilename.txt
:ファイルへのパス"
:パイプのせいで投票はここにあります。 (それ以外の場合、bashはそれらをbashパイプとして使用します)Linuxでは、非常に強力な recode コマンドを使用して、さまざまな文字セットや行末の問題を変換してみることができます。 recode -l は、ツールが変換できるすべての形式とエンコーディングを表示します。それは非常に長いリストになるでしょう。
Get-Content -Encoding UTF8 FILE-UTF8.TXT | Out-File -Encoding UTF7 FILE-UTF7.TXT
入力BOMが正しいと想定できる場合は、最短のバージョン:
gc FILE.TXT | Out-File -en utf7 file-utf7.txt
これを.bashrc
に入れました:
utf8()
{
iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
rm $1
mv $1.tmp $1
}
..ファイルを次のように変換することができます。
utf8 MyClass.Java
Windowsでは、Notepad ++を使って ISO-8859-1 から UTF-8 への変換を行うことができました。 "Encoding"
をクリックしてから"Convert to UTF-8"
をクリックします。
一致するすべてのテキストファイルの文字エンコーディング自動的に検出されるすべての一致するテキストファイルはutf-8
エンコーディングに変換されます。
$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;
これらの手順を実行するには、サブシェルsh
を-exec
と共に使用し、-c
フラグを指定してワンライナーを実行し、"$1"
を付けて位置引数-- {}
としてファイル名を渡します。その間のutf-8
出力ファイルは一時的にconverted
という名前になります。
ここで file -bi
は、
-b、 - brief
出力行の前にファイル名を追加しません(簡潔モード)。
-i、 - mime
fileコマンドは、より伝統的な人間が読める形式の文字列ではなく、MIMEタイプの文字列を出力します。したがって、それは「text/plain」と言うことができます。 「ASCIIテキスト」ではなくcharset = us-ascii」.
find
コマンドは、このようなファイル管理の自動化に非常に役立ちます。
PHP iconv()
iconv("UTF-8", "ISO-8859-15", $input);
DOS/Windows: コードページ を使用
chcp 65001>NUL
type ascii.txt > unicode.txt
コードページを変更するには、コマンドchcp
を使用します。コードページ65001は、MicrosoftのUTF-8の名前です。コードページを設定した後、次のコマンドで生成される出力はコードページセットになります。
通常、プロパティファイル(Java)を書くために、私はこれをlinux(mintおよびubuntuディストリビューション)で使用します。
$ native2ascii filename.properties
例えば:
$ cat test.properties
first=Execução número um
second=Execução número dois
$ native2ascii test.properties
first=Execu\u00e7\u00e3o n\u00famero um
second=Execu\u00e7\u00e3o n\u00famero dois
シモンズ:私は特殊文字を強制するためにポルトガル語で実行番号1/2を書いた。
私の場合、最初の実行で私はこのメッセージを受け取りました:
$ native2ascii teste.txt
The program 'native2ascii' can be found in the following packages:
* gcj-5-jdk
* openjdk-8-jdk-headless
* gcj-4.8-jdk
* gcj-4.9-jdk
Try: Sudo apt install <selected package>
最初のオプション(gcj-5-jdk)をインストールしたとき、問題は解決しました。
これが誰かに役立つことを願っています。
私のお気に入りのツールはJedit(Javaベースのテキストエディタ)です。これには2つの非常に便利な機能があります。
このPythonスクリプトを使用してください。 https://github.com/goerz/convert_encoding.py 任意のプラットフォームで動作します。 Python 2.7が必要です。
Rubyの場合:
Ruby -e "File.write('output.txt', File.read('input.txt').encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: ''))"
ソース: https://robots.thoughtbot.com/fight-back-utf-8-invalid-byte-sequences
IntelliJ IDEA IDEのロードされたファイルのエンコーディングを、現在の文字セットが表示されているステータスバーの右側(下)に変更するだけです。再読み込みまたは変換を促すメッセージが表示されます。変換を使用してください。必ず元のファイルをバックアップしてください。