VS Code によるエンコードの自動推測を停止する

VS Code によるエンコードの自動推測を停止する

VS Code を使用してドイツ語のサイトを作成しています。ファイルでドイツ語の特殊文字を使用していますstyle.css。VS Code を再起動し、ファイルのエンコードを UTF-8 から Windows-1252 に変更すると、下の画像のように表示されます。
自動推測エンコードはオフになっており、デフォルトのエンコードは UTF-8 です。
エンコードの自動変更を停止するにはどうすればよいですか? VS Code のバージョンは 1.32.3 で、Windows 10 を使用しています。

スクリーンショット_文字とエンコードを表示

答え1

自動変更エンコードを停止するにはどうすればよいですか?

- によるとあなた自身のコメント自動推測エンコーディングもうオフ
VS Codeがファイルを次のようにエンコードするという事実Windows-1252コードページ 1252またはCP1252
については別の説明が必要です。


CSSファイルを次のようにデコードするVS Code設定があると仮定すると、Windows-1252、私はあなたの状況を非常に正確に再現することができました 。1

1. シナリオ全体を再現する

私は簡易版style.css、1行のみを含みます:

/* Ü */

VS Codeでエンコードされたファイルを開くにはWindows-1252 (自動推測エンコーディング付き)オフ)、
VS Codeにはsettings.json次のコード/行が含まれていると想定します: 2

"[css]": {"files.encoding": "windows1252"},

このような設定により、VS Codeはすべての.cssファイルを次のように エンコードします。Windows-12523

ダウンロードするとstyle.cssを右クリックして コードで開く、次のものが見られると予想されます:

エンコーディング Windows-1252 では、Ü は Ãœ と表示されます。

^ クリックして拡大

あなたが見る理由 Windows-1252文字Ãœの代わりにシングル UTF-8 ÜキャラクターはWindows-1252 各バイトを読み取ります単一の文字として – 非 ASCII 文字 Ãおよびœ
UTF-8一方では2バイトÜ. 4のような単一の非ASCII文字を読み取る

Ü1. a.正しく表示する方法

ドイツ語の文字をÜ正しく表示するには、以下をクリックする必要があります。
エンコードして再度開く >UTF-8内容から推測

「エンコードして再度開く」は、ファイルのデコード方法を変更します。

選択するエンコードして再度開く しないファイル自体を変更します。
ファイルがどのように表示されるかを変更します。表示されたVS Codeで – 仕組み 解読された

1. b. あなたがすべきことないする

代わりにクリックすると問題が発生します:
エンコードして保存>UTF-8内容から推測

エンコードで保存 > **UTF-8 を選択すると、ファイル自体が変更されます。

これするファイルの変更 – すべて-ASCII文字は 変換された対応する UTF-8 文字に変更します。ファイルを保存すると、これらの変更が保存されます。

今閉じて再度開くとstyle.css、再びエンコードされたとしてWindows-1252
なぜかって? – まさにその行が VS Code に伝えているからです "[css]": {"files.encoding": "windows1252"},settings.json

表示される内容は次のとおりです。

エンコードで保存 > **UTF-8 を選択すると、ファイル自体が変更されます。

Ãœ質問のスクリーンショットに表示されている文字と同じ文字であることに注意してください。

あなたが今見ている理由は文字の代わりに以前と同じです。
シングル UTF-8文字Ã(2バイト)は、 文字Ã(まだ2バイト)をデコードすると、 Windows-1252そして
シングルUTF-8文字œは2つの Windows-1252文字Å“

これであなたのシナリオの再現は完了です。

2. 破損したファイルを修復する方法

Ü破損したものではなく表示したい場合はÃœ、次の操作を行う必要があります: \

  1. ファイルを元に戻す、
  2. エンコードするUTF-8
  3. ファイルを閉じて再度開きます。

1. ファイルを変換する

style.css破損したファイルを元の状態に戻す方法は次のとおりです。
前のスクリーンショットから、ステータスバーでウィンドウズ 1252
それからエンコードして再度開く、 そして最後にUTF-8

Windows 1252 > エンコードで再度開く > UTF-8。

表示されるはずですÃœ。ファイルはまだ破損しているので、変換するそれをWindows-1252 クリックして :
UTF-8 >保存エンコードあり > Windows 1252

UTF-8 > エンコードで保存 > Windows 1252。

ファイルは元の状態に戻りました。
残っているのはデコード正しく(UTF-8)。

2. UTF-8でエンコードする

settings.json、 を削除します "[css]": {"files.encoding": "windows1252"},

3. ファイルを閉じて再度開く

を閉じて再度開きますstyle.cssUTF-8ステータスバーに表示されます。

破損したファイルは復元されました。

やった!ミッション完了。

3. Notepad++ でのエンコードと変換

違いをよりよく理解するためにデコード/エンコードそして 変換するファイルの場合は、別の多機能テキスト エディターでこれを行う方法を確認すると役立つ場合があります。メモ帳++
この役に立つ回答わかりやすい図でその違いを説明します。

Notepad++ でのエンコードと変換の違い。

エンコーディングNotepad++では、再開エンコーディング付き VS Codeでは、
変換中Notepad++では、 保存エンコーディング付きVS Code で。

4. ASCII、ANSI、UTF-8

いくつかの事実が、アスキーANSI、 そしてUTF-8は。

  • ASCII 文字は 1 バイトだけを使用します。
    つまり、1 バイトの 8 ビットのうち 7 ビットを使用します。最上位ビットは常に 0 です。
    これは、10 進数では 0 ~ 127、16 進数では 0x00 ~ 0x7F、
    ビットでは 0000 0000 ~ 0111 1111 に相当します。

  • ANSI/Windows-1252とUTF-8はどちらもASCII文字をASCII文字そのものとしてエンコードします。
    たとえば、文字(文字)kは純粋なASCII文字です。これは1バイト(8ビット)は10進数で107、16進数は0x6Bで、ビットは0110 1011です。
    したがって、ASCII文字kないANSI文字ではないし、ないUTF-8文字です。 – 両方です!
    テキストファイルにのみASCII文字の場合、ANSIとUTF-8のエンコードは一致します
    できない区別できる。このようなファイルは両方ANSIそしてUTF-8でエンコードされています 。5

windows-1252 (CP-1252) エンコーディング テーブル。

^ クリックして拡大

上半分はWindows-1252上の表は0~127の数字に対応し、下半分は128~255の数字に対応しています。後者は非ASCII文字です。ANSIの文字Windows-1252


下の写真は UTF-8 と ASCII 文字表
そしてそれらすべてを表示しますWindows-1252もう一度文字を並べると、128 から 255 までの番号が付けられます。

windows-1252 (CP-1252) 非 ASCII 文字。


バイト数を知りたい場合(そしてUTF-8文字が使用するバイト数(バイト)をこのオンラインツール

参考文献


1 私が提示したシナリオは、かもしれない 起こりました。
もちろん、あなたの状況の原因が何であるかを確実に知ることはできません。

2 を開くにはsettings.jsonCtrl+ ,(カンマ)を押してから、設定を開く右上隅のアイコン:

設定を開く (JSON)

macOS では、の代わりにを使用しますCtrl

3 Windows コード ページを表すために使用される「ANSI」という用語は、歴史的な参照です […]マイクロソフトは
今でも西ヨーロッパ向け ANSI互換的に Windows-1252、例えばnotepad.exeテキストエディタでは にありますC:\WINDOWS\System32。これは私も従っている慣例です。この答え

4 より正確に言うと、各非ASCII UTF-8文字は少なくとも 2(最大4)バイト

5 次 のようなテキストファイルがあるとします。のみ純粋なASCII文字です。テキストエディタでそのファイルを開いて、ステータスバーにANSIと表示されていても、ファイルがないUTF-8でエンコードされています。これは、このテキストエディタがANSIをエンコードに使用していることを意味します。デフォルト エンコーディング。デフォルトのエンコーディングがUTF-8の場合、エディターのステータスバーにはUTF-8が表示されます。同じファイル

関連情報