.htm
開いているファイルが複数あります。編集者警告/エラーはありませんが、で同じファイルを開くと、Jedit
無効なUTF-8エンコーディングに関する警告が表示されます。
HTMLメタタグは「charset = ISO-8859-1」を宣言します。 Jedit 許可代替エンコーディングリストそしてエンコーディング自動検出器リスト(現在「BOM XML-PI」)即時の問題を修正しました。でも思いました。メタデータが存在しない場合はどうなりますか?
エンコーディング情報が利用できない場合、どのエンコーディングを適用できるかを「最高の推測」にすることができるCLIプログラムはありますか?
そして少し違う質問ですが、テストできるCLIプログラムはありますか?みんな知ってるコーディング?
ベストアンサー1
このfile
コマンドは、エンコーディングで「最高の推測」を使用します。
以下は、UTF-8でエンコードされたドイツ語の発音区別記号を含むファイルのデモです。
$ file umlaut-utf8.txt
umlaut-utf8.txt: UTF-8 Unicode text
発音区別符号は、他の2つの符号化において同一である。
$ file umlaut-iso88591.txt umlaut-utf16.txt
umlaut-iso88591.txt: ISO-8859 text
umlaut-utf16.txt: Little-endian UTF-16 Unicode text, with no line terminators
3つすべてが混在すると、誤ったエンコードが発生します。
$ file umlaut-mixed.txt
umlaut-mixed.txt: data
この-i
パラメータを使用してMIMEタイプとして出力できます。
$ file -i *
umlaut-iso88591.txt: text/plain; charset=iso-8859-1
umlaut-mixed.txt: application/octet-stream; charset=binary
umlaut-utf16.txt: text/plain; charset=utf-16le
umlaut-utf8.txt: text/plain; charset=utf-8
(これはMacでも同様です-I
。Appleの開発者は違う考えだからです)
このfile
コマンドは非常に制限的です。いくつかのバイトをチェックし、エンコードが何であるかを推測しようとします。パターンを認識すると、これはエンコードと言われます。パターンが認識されない場合、または認識されたパターンが互いに競合している場合は、「データ」(またはMIME形式のバイナリ)を表示します。これが本質的に意味するのは、有効なエンコーディングを認識できないことです。
これは、文字とウムラウトの分布に基づいて、テキストがスペイン語かフランス語かを識別する方法と似ています。受信したテキストの文字分布が意味をなさない場合は、そのテキストが「間違った」テキストであると結論付けることができます。しかし、それは以前に一度も見たことがない言語かもしれません。これをLorem Ipsumと比較してみてください。テキストはバラより自然なテキストに似ていますが、実際には意味がありません。https://en.wikipedia.org/wiki/Lorem_ipsum
file
以下は、正しいエンコーディングが認識されない例です。DOSテキスト(ブロック図文字、CRLF行終端)とエスケープシーケンスを含むファイルの表示
file
コマンドの詳細は次のとおりです。http://www.linfo.org/file_command.html
ファイルをどのように生成しますか?
$ echo ä > umlaut-utf8.txt
この行をコピーして実行できます。 utf8ウムラウトを含むファイルを生成する必要があります。
16進ダンプを確認してください。
$ hexdump -C umlaut-utf8.txt
00000000 c3 a4 0a |...|
00000003
別のエンコーディングに変換:
$ iconv -f utf8 -t iso88591 umlaut-utf8.txt > umlaut-iso88591.txt
$ iconv -f utf8 -t utf16 umlaut-utf8.txt > umlaut-utf16.txt
16進ダンプ:
$ hexdump -C umlaut-iso88591.txt
00000000 e4 0a |..|
00000002
$ hexdump -C umlaut-utf16.txt
00000000 ff fe e4 00 0a 00 |......|
00000006
と比較するhttps://en.wikipedia.org/wiki/ä#Computer_encoding
3つすべてを混ぜ合わせて「間違った」アイテムを作成します。
$ cat umlaut-iso88591.txt umlaut-utf8.txt umlaut-utf16.txt > umlaut-mixed.txt