CRLF行ターミネータを使用して、エンコーディングを非ISO拡張ASCIIテキストからUTF-8に変更する方法は?


21

私はtxtファイルを持っています:

$ file -i x.txt
x.txt: text/plain; charset=unknown-8bit
$ file x.txt 
x.txt: Non-ISO extended-ASCII text, with CRLF line terminators

また、誤ってエンコードされた文字がいくつかあります。

trwa³y, sta³y, usuwaæ

このファイルのエンコーディングをUTF-8に変更するにはどうすればよいですか?私はこれまでに次の方法を試しました:

$ iconv -f ASCII -t UTF-8 x.txt
                puiconv: illegal input sequence at position 4

どういうわけかextended ASCIIhigh ASCII)を使用する必要がありますが、iconvのエンコードリストで見つけることができません。


2
どこかにファイルをアップロードできますか?
ヤノス14年

8ビットISOエンコードの便利なリストがあり、すべてここに並んで表示されます。それらのいずれかは、ファイルで観察したものに近く見えますか?たとえば、 "sta³y"を "stacy"にすべきと考える場合、その単語に含まれる奇妙な16進コードが何であるかについて、どのエンコーディングに "c"があるかを見つけます。
ジョン1024 14年

おそらく90%の時間、「非ISO拡張ASCIIテキスト」は、Windows 1252コードページでエンコードされたファイルになります。「おそらく世界で最も使用されている8ビット文字エンコーディングです。」(ウィキペディア)。最初にそれを試してみてくださいiconv -f windows-1252 -t utf-8 file
nyov

回答:


33

file 次のことが検出されるため、「非ISO拡張ASCIIテキスト」と表示されます。

  • ほとんどの場合、改行以外の制御文字(バイト値0〜31)がない「テキスト」ファイル。
  • 「拡張ASCII」。ASCII範囲外の文字があるため(バイト値≥128)。
  • 128〜159の範囲の文字があるため、「非ISO」(ISO 8859はこの範囲を制御文字用に予約しています)。

このファイルがどのエンコーディングにあると思われるかを把握する必要があります。Encaの自動認識を試すことができます。テキストの言語を伝えることで、正しい方向に微調整する必要があるかもしれません。

enca x.txt
enca -L polish x.txt

ファイルを変換するには、-xオプションを渡します。enca -L polish x.txt -x utf8 >x.utf8.txt

Encaを使用できない場合、または使用したくない場合は、エンコードを手動で推測できます。少し調べてみると、これはポーランド語のテキストであり、単語はtrwały、stały、usuważであるため、³łæ→の翻訳を探していますż。以下のようなこのルックス2 -ラテン語ラテン-10以上の可能性が高い(与えられた「非ISO」CP1250は、あなたがしているの視聴などにlatin1。UTF-8にファイルを変換するには、使用することができますrecodeののiconvを

recode CP1250..utf8 <x.txt >x.utf8.txt
iconv -f CP1250 -t UTF-8 <x.txt >x.utf8.txt

私は一部を得ることはありません< x.txt > x.utf8.txt私たちが使用するのはなぜ<当時と>?どのように機能しますか?
フィリップバルトゥジ


1

geditでテキストファイルを開くと、「名前を付けて保存」ダイアログに現在のエンコーディングが表示されます。


0

x.txtの正確なエンコーディングを見つけようとしましたか?サポートされているエンコーディングのリストを取得します

iconv --list

時々、latin1とutf8の間に不一致が生じることがあります。その後、utf8からutf8への変換、およびutf8からutf8への変換が役立ちます。


0

encaライブラリを使用して自動変換スクリプトを作成しました。NASでそれを使用して字幕をUTF-8に変換しますが、任意の自動変換に使用できます。

気軽に使用してください:)

編集:

#!/bin/bash
LANGUAGE=czech
TO=utf8
CONVERT="enca -L $LANGUAGE -x $TO"

# Find and onvert
find ./ -type f -name "*.srt" | while read fn; do
  IS_TARGET=`enca "${fn}" | egrep -ow -m 1 'UTF-8|Unrecognized|KOI8-CS2|7bit ASCII|UCS-2|Macintosh Central European'`

    if [ "$IS_TARGET" != "UTF-8" ] &&
       [ "$IS_TARGET" != "UCS-2" ] &&
       [ "$IS_TARGET" != "Macintosh Central European" ] &&
       [ "$IS_TARGET" != "Unrecognized" ] &&
       [ "$IS_TARGET" != "7bit ASCII" ] &&
       [ "$IS_TARGET" != "KOI8-CS2" ]; then

        echo "${fn} ---- Will be converted!"
    # optional backup of original srt
        # cp "${fn}" "${fn}.bak"
        $CONVERT "${fn}"
    fi  

done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.