エンコーディング UTF-8-BOM Ruby [重複]
概要
Rubyでファイルエンコーディングを識別しようとしています。
file = File.open("filePath", "rw");
file.encoding;
しかし、ファイルがそのようなエンコードであっても、UTF-8-BOM エンコードを取得できません。すべて取得できますが、UTF-8-BOM は取得できません。 UTF-8-BOM エンコーディングは Ruby ではサポートされていない可能性がありますか?ファイルを開いたり読んだりする必要はありませんが、そのエンコードタイプを識別する必要があります。
解決策
「UTF-8-BOM」エンコードとは何を意味しますか?実際、これは単純な古き良き「UTF-8」エンコーディングであり、バイト オーダー マーク (EF BB BF) が先頭に付加されているだけです。BOM は UTF-8 には影響しません。 UTF-8 での BOM の使用は推奨されません。要約すると、そのようなエンコーディングは存在せず、エンディアンのエンディアンを識別するのに役立つバイト オーダー マークが存在します。
File.open は汎用ストリーム リーダーであり、何も示唆しません。明示的なエンコーディング (シングルバイト エンコーディングに役立ちます) を使用するように指示される場合があります。また、BOM に基づいてエンディアンのエンディアンを決定することもあります (シングルバイト エンコーディングに役立ちます)。固定幅の Unicode エンコーディング。)
ファイルに BOM があることを確認したい場合は、ファイルから 3 バイトを読み取り、EF BB BF と比較します。