kzen.dev
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
Seyed Mohammad
Seyed Mohammad
質問

テキストファイルのエンコードを変換する

文字コードに問題があるテキストファイル(私の母国語であるペルシャ語の字幕ファイルなど)をよく見かけます。これらのファイルはWindowsで作成され、適切でないエンコーディング(ANSIと思われる)で保存されており、このようにちんぷんかんぷんで読めない状態になっています。

ここに画像の説明を入力。

Windowsでは、以下のようにNotepad++を使ってエンコードをUTF-8に変換すれば、簡単に修正できます。

画像の説明を入力してください]4 。

そして、正しく読める結果は次のようになります。

画像の説明を入力してください]5。

GNU/Linuxで同様の解決策をたくさん探しましたが、残念ながら提案された解決策(例えばこの質問)はうまくいきません。特に、iconv`やrecode`を勧めているのを見ましたが、これらのツールではうまくいきませんでした。以下のコマンドを含め、多くのコマンドを試しましたが、すべて失敗しました。

$ recode ISO-8859-15..UTF8 file.txt
$ iconv -f ISO8859-15 -t UTF-8 file.txt > out.txt
$ iconv -f WINDOWS-1252 -t UTF-8 file.txt > out.txt 

どれもうまくいきません!

私はUbuntu-14.04を使用しており、Notepad++と同じように動作する簡単な解決策(GUIまたはCLIのいずれか)を探しています。

むしろ、ソースエンコーディングはツールによって自動的に検出され、ターゲットエンコーディングのみがユーザーによって提供されるべきです。しかし、それにもかかわらず、ソースエンコーディングを提供することを必要とする実用的なソリューションについて知ることができるのは嬉しいことです。

もし誰かがいろいろな解決策を調べるためのテストケースを必要とするなら、上記の例はこのリンクからアクセス可能です。

15 2015-04-14T11:38:44+00:00 3
 Community
Community
編集された質問 23日 5月 2017 в 12:39
Ubuntu
encoding
この質問には 1 つの答え があり、読むには ログイン してください。
Incnis Mrsi
Incnis Mrsi
18日 8月 2015 в 1:38
2015-08-18T13:38:02+00:00
さらに
ソース
編集
#38381143

このペルシア語テキストのWindowsファイルは、Windows-1256でエンコードされています。そのため、OPと同じようなコマンドで解読することができますが、文字コードが異なります。すなわち

Windows-1256..UTF-8 <Windows_file.txt > UTF8_file.txt` (元の投稿者の苦情により糾弾。コメント参照)

iconv -f Windows-1256 Windows_file.txt > UTF8_file.txt

これは、環境変数LANGにUTF-8ロケールが設定されていることを前提にしています。現在のロケールに関係なく、任意のエンコーディング(UTF-8など)に変換するためには、次のようにします。

iconv -f Windows-1256 Windows_file.txt -t ${output_encoding} > ${output_file}

元の投稿者は、テキスト再コード化ツール(recode, iconv)の意味も混同しているようです。ソースエンコーディング (source.. または -f) では、ファイルが (それを作成したプログラムによって) **保存されたときのエンコーディングを指定する必要があります。読み込もうとする(しかし失敗する)プログラムのモジバケ文字に基づく(naïve)推測ではありません。ISO-8859-15やWINDOWS-1252でペルシャ語のテキストを読もうとすると、明らかに袋小路にはまります。

 wjandrea
wjandrea
編集した答え 20日 4月 2017 в 9:49
12
0
Ken Mollerup
Ken Mollerup
14日 4月 2015 в 6:02
2015-04-14T18:02:51+00:00
さらに
ソース
編集
#38381138

私はGeditを使っていますが、間違ったエンコーディングでエラーになり、UTF-8に変換したいものを選択することができます。

ここに画像の説明を入力する。

申し訳ありませんが、私は最終的に私のテキストファイルを通過したので、今、彼らはすべて変換されています。

notepad++も大好きでした、今でも懐かしいです。

 wjandrea
wjandrea
編集した答え 20日 4月 2017 в 10:00
1
0
Seyed Mohammad
Seyed Mohammad
20日 8月 2015 в 12:02
2015-08-20T12:02:16+00:00
さらに
ソース
編集
#38381156

この問題を補完するものとして、Incnis Mrsi's answer の iconv コマンドを基にした便利な Bash スクリプトを用意しました。

#!/bin/bash

if [ $# -lt 1 ]
then
   echo 'Specify at least one file to fix.'
   exit 1
fi

# Temp file to store conversion attempt(s).
tmp='tmp.fixed'

for file in "[email protected]"
do
  # Try to fix the file encoding.
  if iconv -f WINDOWS-1256 "$file" -t UTF-8 > $tmp; then
    echo "Fixed: '$file'"
    cat $tmp > "$file"
  else
    echo "Failed to fix: '$file'"
  fi
done
rm $tmp

このスクリプトを fix-encoding.sh という名前で保存し、chmod +x fix-encoding.sh で実行権限を与えて、以下のように使ってみてください。

./fix-encoding.sh myfile.txt my2ndfile.srt my3rdfile.sub

このスクリプトは、入力として与えられた任意の数のファイルのエンコーディングを修正しようとします。ファイルはインプレースで修正されるので、中身は上書きされることに注意してください。

 wjandrea
wjandrea
編集した答え 20日 4月 2017 в 9:58
1
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Ilya Smirnov
登録済み 2日前
2
Денис Васьков
登録済み 4日前
3
Dima Patrushev
登録済み 6日前
4
sirojidddin otaboyev
登録済み 2週間前
5
Елена Гайдамамакинат
登録済み 2週間前
JA
© kzen.dev :年
ソース
askubuntu.com
ライセンス cc by-sa 3.0 帰属