MIMEエンコーディングを再帰的に変換する方法(us-asciiからutf-8へ)

MIMEエンコーディングを再帰的に変換する方法(us-asciiからutf-8へ)

us-asciiエンコードファイルはほとんどありません。私はそれらを再帰的に変換したいと思いますutf-8

コマンドを使用しているファイルを見つけるには

find . -name "*.adoc" -type f -exec file --mime-encoding {} \; | grep -v ": us-ascii"

出力は次のとおりです。

./sds.adoc: us-ascii
./docker/misc/terms.adoc: us-ascii
./docker/misc/tools.adoc: us-ascii
./docker/basics-containers.adoc: us-ascii
./web-scraping/links.adoc: us-ascii
./system-design/reference-architecture.adoc: us-ascii
./system-design/replication vs load balancing.adoc: us-ascii
./system-design/performance.adoc: us-ascii
./system-design/links.adoc: us-ascii
./system-design/disaster-recovery.adoc: us-ascii

変換するには使用する必要があると思います。iconv -f us-ascii file.adoc -t UTF-8 -o file.adoc

どうすればいいのかわかりません。

ベストアンサー1

US-ASCII は UTF-8 のサブセットです。 US-ASCIIはU + 0000からU + 007Fまでの文字のみを扱い、これらの文字のエンコーディングはUS-ASCIIからUTF-8と同じです(バイト値はUnicodeコードポイントに対応します(Uのバイト値はバイト0x41 )+ 0041文字(A例:))。

だからあなたができることは何もありません。ファイルはすでにUTF-8形式です。

fileus-asciiを報告する理由は、見た小さなサブセットでテキストのように見え、0x7fより大きいバイト値がなく、おそらく使用された文字分布が他の7ビット文字セット(EBCDICなど)よりも小さいためです。 ASCIIの可能性が高いです。

これらを実行するのはiconv -f us-ascii -t UTF-8せいぜい何もせず、最悪の場合何か間違っfileていて0x7fより高いバイト値があるためデータを失うので非生産的です(UTF-8またはU+007Fより高い他のエンコーディング文字設定の文字について) 。 ) 見ていない部分はiconvエラーにより中断され、不完全なファイルが残ります。


1推測として、通常は信頼性の高い決定できないテキストファイルの文字セットを推測するためにどのような経験的方法を使用しているかを確認するには、libmagicコードを調べる必要があります。

おすすめ記事