答え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-1252。
3
ダウンロードするとstyle.css
を右クリックして
コードで開く、次のものが見られると予想されます:
^ クリックして拡大
あなたが見る理由二 Windows-1252文字Ãœ
の代わりにシングル UTF-8 Ü
キャラクターはWindows-1252
各バイトを読み取ります単一の文字として – 非 ASCII 文字
Ã
およびœ
。
UTF-8一方では2バイトÜ
.
4のような単一の非ASCII文字を読み取る
Ü
1. a.正しく表示する方法
ドイツ語の文字をÜ
正しく表示するには、以下をクリックする必要があります。
エンコードして再度開く >UTF-8内容から推測。
選択するエンコードして再度開く しないファイル自体を変更します。
ファイルがどのように表示されるかを変更します。表示されたVS Codeで – 仕組み
解読された。
1. b. あなたがすべきことないする
代わりにクリックすると問題が発生します:
エンコードして保存>UTF-8内容から推測。
これするファイルの変更 – すべて非-ASCII文字は 変換された対応する UTF-8 文字に変更します。ファイルを保存すると、これらの変更が保存されます。
今閉じて再度開くとstyle.css
、再びエンコードされたとしてWindows-1252(
なぜかって? – まさにその行が VS Code に伝えているからです
"[css]": {"files.encoding": "windows1252"},
!settings.json
)
表示される内容は次のとおりです。
Ü
質問のスクリーンショットに表示されている文字と同じ文字であることに注意してください。
あなたが今見ている理由は四文字の代わりに二以前と同じです。
–シングル UTF-8文字Ã
(2バイト)は、
二文字Ã
(まだ2バイト)をデコードすると、
Windows-1252そして
シングルUTF-8文字œ
は2つの
Windows-1252文字Å“
。
これであなたのシナリオの再現は完了です。
2. 破損したファイルを修復する方法
Ü
破損したものではなく表示したい場合はÃœ
、次の操作を行う必要があります: \
- ファイルを元に戻す、
- エンコードするUTF-8、
- ファイルを閉じて再度開きます。
1. ファイルを変換する
style.css
破損したファイルを元の状態に戻す方法は次のとおりです。
前のスクリーンショットから、ステータスバーでウィンドウズ 1252、
それからエンコードして再度開く、 そして最後にUTF-8。
表示されるはずですÃœ
。ファイルはまだ破損しているので、変換するそれをWindows-1252
クリックして :
UTF-8 >保存エンコードあり > Windows 1252。
ファイルは元の状態に戻りました。
残っているのはデコード正しく(UTF-8)。
2. UTF-8でエンコードする
でsettings.json
、 を削除します
"[css]": {"files.encoding": "windows1252"},
。
3. ファイルを閉じて再度開く
を閉じて再度開きますstyle.css
。UTF-8ステータスバーに表示されます。
やった!ミッション完了。
3. 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上の表は0~127の数字に対応し、下半分は128~255の数字に対応しています。後者は非ASCII文字です。ANSIの文字Windows-1252。
下の写真は
UTF-8 と ASCII 文字表、
そしてそれらすべてを表示しますWindows-1252もう一度文字を並べると、128 から 255 までの番号が付けられます。
バイト数を知りたい場合(そして何UTF-8文字が使用するバイト数(バイト)をこのオンラインツール。
参考文献
- style.css | 以下のみを含む
/* Ü */
- マイクロソフトのキャシー・ウィシンク氏を引用した投稿
- 非ASCII UTF-8文字はそれぞれ少なくとも2(最大4)バイト
- アメリカ標準情報交換コード表
- ANSIとは何かについての答え | セクション3の表
- Unicode 変換フォーマット - 8 ビットの説明
- Windows-1252 (CP-1252) エンコード テーブル
- Notepad++ | ダウンロードページ
- Notepad++ で ANSI を UTF-8 に変換する方法
- UTF-8 と ASCII 文字表
- UTF-8 からバイト (16 進数) へのコンバーター
1
私が提示したシナリオは、かもしれない
起こりました。
もちろん、あなたの状況の原因が何であるかを確実に知ることはできません。
2
を開くにはsettings.json
、Ctrl+ ,(カンマ)を押してから、設定を開く右上隅のアイコン:
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が表示されます。同じファイル。