私のファイルシステム(Windows 7)には、いくつかのテキストファイルがあります(重要な場合、これらはSQLスクリプトファイルです)。
Notepad ++ で開くと、[エンコーディング]メニューで、「UCS-2リトルエンディアン」のエンコーディングと「BOMなしのUTF-8」のエンコーディングがあると報告されています。
ここの違いは何ですか?これらはすべて完全に有効なスクリプトのようです。 Notepad ++なしでファイルのエンコーディングを確認するにはどうすればよいですか?
ファイルは通常、ファイルヘッダーでエンコードを示します。多くの例 here があります。ただし、ヘッダーを読み取っても、ファイルが実際に使用しているエンコーディングを確認することはできません。
たとえば、最初の3バイトが0xEF,0xBB,0xBF
のファイルはおそらくUTF-8でエンコードされたファイルです。ただし、文字
で始まるISO-8859-1ファイルの場合があります。または、完全に異なるファイルタイプである可能性があります。
Notepad ++は、ファイルが使用しているエンコーディングを推測するために最善を尽くし、ほとんどの場合、それを正しく処理します。しかし、時々それはそれを誤解します-それがその「エンコーディング」メニューがそこにある理由です、それであなたはその最良の推測を上書きすることができます。
あなたが言及する2つのエンコーディングについて:
0xFF,0xFE
を最初の2バイトとして。 Notepad ++は、UTF-16の特定の側面をサポートしていないため、私が言えることから、それらを「UCS-2」と説明しています。それはいけません。それができれば、「ランダムな意味不明」なWebサイトやテキストファイルはそれほど多くありません。そのため、通常、エンコードはペイロードと共にメタデータとして送信されます。
そうでない場合にできることは「スマートな推測」だけですが、同じバイトシーケンスが複数のエンコーディングで有効な場合があるため、結果はしばしばあいまいになります。