581

文字セット間でテキスト ファイルを変換するための最も速くて簡単なツールまたは方法は何ですか?

具体的には、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が提案するrecode ( manual ) は、 1 つまたは複数のファイルをその場で変換します。例:

      $ recode UTF8..ISO-8859-15 in.txt
    

    これは短いエイリアスを使用します:

      $ recode utf8..l9 in.txt
    

    Recode は、異なる行末タイプとエンコーディング間の変換に使用できるサーフェスもサポートしています。

    改行を 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
    

Windows でPowershell ( Jay Bazuzi ) を使用する場合:

  • 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 サポートのことですか? 「文字列」を使用すると、たとえばその逆の場合にこれが行われます

gc -en string in.txt | Out-File -en utf8 out.txt

注: 可能な列挙値は、「Unknown、String、Unicode、Byte、BigEndianUnicode、UTF8、UTF7、Ascii」です。

4

21 に答える 21

277

スタンドアロン ユーティリティアプローチ

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 です。

于 2008-09-15T17:24:23.060 に答える
101

VIMを試す

持っているvim場合は、これを使用できます:

すべてのエンコーディングについてテストされていません。

これの優れた点は、ソースのエンコーディングを知る必要がないことです。

vim +"set nobomb | set fenc=utf8 | x" filename.txt

このコマンドはファイルを直接変更することに注意してください


解説パート!

  1. +: ファイルを開くときにコマンドを直接入力するために vim によって使用されます。通常、特定の行でファイルを開くために使用されます。vim +14 file.txt
  2. |: 複数のコマンドの区切り記号 ( ;bash など)
  3. set nobomb: utf-8 BOM なし
  4. set fenc=utf8: 新しいエンコーディングを utf-8 doc リンクに設定します
  5. x: ファイルを保存して閉じる
  6. filename.txt: ファイルへのパス
  7. ": qotes はパイプのためにここにあります。(それ以外の場合、bash はそれらを bash パイプとして使用します)
于 2015-09-30T08:41:28.073 に答える
40

Linux では、非常に強力なrecodeコマンドを使用して、さまざまな文字セットや行末の問題を変換しようとすることができます。recode -lは、ツールが変換できるすべての形式とエンコーディングを表示します。非常に長いリストになる可能性があります。

于 2008-09-15T17:24:18.723 に答える
24
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
于 2008-09-15T17:29:28.197 に答える
24

iconv(1)

iconv -f FROM-ENCODING -t TO-ENCODING file.txt

また、多くの言語で iconv ベースのツールがあります。

于 2008-09-15T17:23:17.183 に答える
18

iconv Bash 関数を試す

私はこれを入れました.bashrc

utf8()
{
    iconv -f ISO-8859-1 -t UTF-8 $1 > $1.tmp
    rm $1
    mv $1.tmp $1
}

..次のようにファイルを変換できるようにします。

utf8 MyClass.java
于 2011-12-06T14:43:58.560 に答える
17

Notepad++をお試しください

Windowsでは、Notepad++を使用してISO-8859-1からUTF-8に変換することができました。クリックし"Encoding"てから"Convert to UTF-8"

于 2012-06-07T14:30:46.907 に答える
3

PHP iconv()

iconv("UTF-8", "ISO-8859-15", $input);

于 2008-09-17T06:18:34.940 に答える
1

通常、プロパティファイル(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

PS: 特殊文字を強制するために、ポルトガル語で実行番号 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) をインストールすると、問題は解決しました。

これが誰かを助けることを願っています。

于 2016-11-28T19:32:40.160 に答える
1

パワーシェルで:

function Recode($InCharset, $InFile, $OutCharset, $OutFile)  {
    # Read input file in the source encoding
    $Encoding = [System.Text.Encoding]::GetEncoding($InCharset)
    $Text = [System.IO.File]::ReadAllText($InFile, $Encoding)
    
    # Write output file in the destination encoding
    $Encoding = [System.Text.Encoding]::GetEncoding($OutCharset)    
    [System.IO.File]::WriteAllText($OutFile, $Text, $Encoding)
}

Recode Windows-1252 "$pwd\in.txt" utf8 "$pwd\out.txt" 

サポートされているエンコーディング名のリスト:

https://docs.microsoft.com/en-us/dotnet/api/system.text.encoding

于 2020-07-30T15:14:18.177 に答える
0

ルビーの場合:

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

于 2018-06-26T06:25:16.317 に答える
-1

ファイルの文字エンコーディングを修正するにはどうすればよいですか? で 説明されているように それをシナライズ!ICU ライブラリでサポートされているすべてのエンコーディング間で、OS X 上で簡単に変換できます。

さらに、すべてのエンコーディングから Unicode に変換されたファイルの一部のバイトを表示して、ファイルに適したものをすばやく確認できます。

于 2013-06-26T19:42:37.773 に答える