
メモ帳で次のバッチファイルを編集しました。メモ帳の右下隅に「UTF8」と表示されました。ファイルを ANSI 形式で保存しました。
今、メモ帳の右下隅に「ANSI」が表示されました。ファイルを閉じて再度開きました。メモ帳の右下隅に「UTF8」が表示されました。上記のプロセスを数回繰り返しましたが、毎回同じ結果が得られました。
ANSI ファイルですか、それとも UTF8 ファイルですか?
あるいは、メモ帳の右下隅に表示される内容は何の意味もないのでしょうか?
これは、Windows 11 Pro 23H2 ビルド 22631.3296、Windows Feature Experience Pack 1000.22687.1000.0 です。Windows Notepad 11.2401.26.0
[申し訳ありません! ファイルを追加するのを忘れました]
date /t >C:\health.txt
time /t >>c:\health.txt
sfc /scannow >>c:\health.txt
time /t >>c:\health.txt
sfc /scannow >>c:\health.txt
time /t >>c:\health.txt
答え1
ANSI ファイルですか、それとも UTF8 ファイルですか?
両方
ASCII 文字のみが含まれている場合は、ANSI と UTF-8 の両方になります。
他のほとんどの文字セットおよびエンコーディングも同様です。これは、ほとんどのエンコーディングに、ASCII コード ポイント (数値) を使用する ASCII セットが含まれているためです。
例外は、かつては非常に一般的だった IBM の EBCDIC などの文字エンコードです。
余談ですが、マイクロソフトは歴史的にANSIという用語を、米国規格協会(ANSI)が数多くの標準規格の1つとして公開することを期待していた文字セットを指すために使用していました。ANSIはそうしませんでした。より正確で便利な名前は次のようになります。コードページ 1252ANSI でファイルを作成したと言うことは、キッチンを Pantone または RAL 色で塗装したと言うことに少し似ています。
Microsoft アプリケーションは、通常、UTF-8 ファイルをバイト オーダー マーク (BOM) 付きで書き込みます。これにより、アプリケーションは UTF-16LE、UTF-16BE、UTF-8 などのさまざまな Unicode エンコードを認識できるようになります。UTF-8 ファイル内の BOM は、ファイル コンテンツのエンコードを識別するためだけに使用され、バイト オーダーは UTF-8 には適用されないため、バイト オーダーを示すことはできません。テキスト ファイルに BOM があると、問題が発生する可能性があります。たとえば、BOM によってスクリプトの実行可能署名が置き換えられるため、Linux シェル スクリプトが動作しなくなります#!
。
Microsoftアプリケーションはライブラリ関数を使用して推測ファイルの内容からファイルのエンコーディングを判別します。これは信頼性が低いことで有名ですが、時間の経過とともに改善されてきました。
関連している
答え2
おそらく問題ないと思います。英語のテキストのみを含むファイルは ASCII であることが多く、(マークされていない) UTF-8 と ASCII/ANSI の間に違いはありません。
ファイルを強制的に UTF-8 にしたい場合は、BOM 付きの UTF-8 として保存する必要があります。BOM (「バイト オーダー マーク」、ファイルの先頭にある特別なマーカー) がない場合、エディターは推測する必要があり、ファイルに特別な文字 (ä、ö、ê などの英語以外の発音区別記号など) がない場合、すべての共通文字テーブルの最初の 128 文字は同じなので、BOM は問題になりません。
答え3
このメモ帳の UTF-8 の表示は偽です。テキスト ファイルを ANSI と UTF-8 の両方で保存しましたが、両方のファイルは完全に同一でした。
メモ帳のUTF-8実装は、一貫性に欠けているようです。UTF-8形式で保存すると、 バイトオーダーマーク (BOM) ファイルの先頭に追加されますが、これは実行されません。
ANSIとUTF-8(BOMの有無にかかわらず)の違いを正しく処理するには、より進化したテキストエディタが必要です。たとえば、 メモ帳++。