자동 추측 인코딩에서 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가 파일을 다음과 같이 인코딩한다는 사실윈도우-1252 (코드 페이지 1252또는CP1252)
다른 설명이 필요합니다.

CSS 파일을 구체적으로 디코딩하는 VS Code 설정이 있다고 가정
하면윈도우-1252, 귀하의 상황을 매우 정확하게 재현할 수 있었습니다. 1

1. 전체 시나리오 재현

나는단순화된 버전style.css, 단 한 줄만 포함 :

/* Ü */

VS Code가 인코딩을 사용하여 파일을 열도록 하려면윈도우-1252 (자동 추측 인코딩 사용끄다),
VS Code에 settings.json다음 코드/라인이 포함되어 있다고 가정합니다. 2

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

.css이러한 설정을 사용하면 VS Code가 모든 파일을 다음과 같이 인코딩합니다 .윈도우-1252.

다운로드하면style.css을 선택한 다음 마우스 오른쪽 버튼을 클릭하고 코드로 열기, 다음을 볼 것으로 예상됩니다.

Windows-1252로 인코딩하면 Ü가 Ãœ로 표시됩니다.

^ 확대하려면 클릭하세요

보는 이유 윈도우-1252문자 – Ãœ– 대신하나의 UTF-8 Ü성격이 그렇죠?윈도우-1252 각 바이트를 읽습니다.단일 문자 – ASCII가 아닌 문자 Ãœ.
UTF-8반면에 사용2바이트와 같은 ASCII가 아닌 단일 문자를 읽으려면 Ü. 4

1. 가. Ü올바르게 표시하는 방법

독일어 문자를 Ü올바르게 표시하려면 다음을 클릭해야 합니다.
인코딩으로 다시 열기 >UTF-8내용으로 추측.

'인코딩으로 다시 열기'는 파일이 디코딩되는 방식을 변경합니다.

고르는인코딩으로 다시 열기 그렇지 않다파일 자체를 변경하십시오.
파일의 상태가 변경됩니다.표시됨VS Code에서 – 어떻게 되나요? 디코딩된.

1. ㄴ. 당신이해야 할 일~ 아니다하다

대신 다음을 클릭하면 문제가 발생합니다.
인코딩으로 저장>UTF-8내용으로 추측.

인코딩으로 저장 > **UTF-8은 파일 자체를 변경합니다.

이것하다파일 변경 – 모두-ASCII 문자는 변환됨해당 UTF-8 문자로 변환됩니다. 파일을 저장하면 이러한 변경 사항이 저장됩니다.

이제 닫았다가 다시 열면 style.css다시인코딩된~처럼윈도우-1252.
(왜? – 이것이 바로 VS Code "[css]": {"files.encoding": "windows1252"},에 있는 줄이 settings.json 말하는 내용이기 때문입니다!)

여기서 보게 될 내용은 다음과 같습니다.

인코딩으로 저장 > **UTF-8은 파일 자체를 변경합니다.

Ãœ질문의 스크린샷에 표시된 문자와 동일한 문자가 어떻게 표시되는지 확인하세요 .

지금 보시는 이유는대신 문자이전과 동일합니다.
하나의 UTF-8문자 Ã(2바이트)가 다음과 같이 표시됩니다. 로 디코딩할 때 문자 Ã(여전히 2바이트) 윈도우-1252.
그리고 싱글UTF-8문자는 œ두 가지로 표시됩니다. 윈도우-1252문자 Å“.

이로써 귀하의 시나리오 재현이 완료되었습니다.

2. 손상된 파일을 복구하는 방법

Ü손상된 을 표시하지 않고 표시하려는 경우 다음을 Ãœ수행해야 합니다. \

  1. 파일을 다시 변환하고,
  2. 인코딩하다UTF-8,
  3. 파일을 닫았다가 다시 엽니다.

1. 파일을 다시 변환

style.css손상된 파일을 원래 상태로 되 돌리는 방법은 다음과 같습니다 .
이전 스크린샷부터 시작하여 상태 표시줄에서윈도우 1252,
그 다음에인코딩으로 다시 열기, 그리고 마지막으로UTF-8.

Windows 1252 > 인코딩으로 다시 열기 > UTF-8.

볼 것으로 예상됩니다 Ãœ. 파일이 여전히 손상되었으므로 이제전환하다그것을윈도우-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++에서 인코딩과 변환의 차이점.

부호화Notepad++에서는 다음과 같습니다.다시 열다인코딩 포함 VS 코드에서는 반면
변환 중Notepad++에서는 다음과 같습니다. 구하다인코딩 포함VS 코드에서.

4. ASCII, ANSI 및 UTF-8

몇 가지 사실은 무엇을 이해하는 데 도움이 될 수 있습니다.아스키, 안시, 그리고UTF-8이다.

  • ASCII 문자는 단일 바이트만 사용합니다.
    또는 원하는 경우 바이트의 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 인코딩이 일치합니다.
    할 수 없다하나를 다른 것과 구별하십시오. 그러한 파일은둘 다안시그리고UTF-8로 인코딩되었습니다. 5

Windows-1252(CP-1252) 인코딩 테이블.

^ 확대하려면 클릭하세요

상반부는윈도우-1252위 표는 0~127번에 해당하고 아래쪽 절반은 128~255번에 해당합니다. 후자는 비ASCII입니다.안시의 문자윈도우-1252.


아래 사진은 에서 가져온 것입니다. UTF-8 및 ASCII 문자 차트,
해당 항목을 모두 표시합니다.윈도우-1252128-255번으로 다시 한 번 문자를 입력하세요.

Windows-1252(CP-1252) 비ASCII 문자입니다.


몇 바이트(및무엇바이트) UTF-8 문자를 사용하는 경우 시도해 보세요.이 온라인 도구.

참고자료


1 내가 제시하는 시나리오는 무엇을 설명하는지 그럴듯하게 설명하고 있다고 생각합니다.~할 것 같다 일어났습니다.
물론, 귀하의 상황이 발생한 원인이 무엇인지 확실히 알 수는 없습니다.

2 을 열려면 + (쉼표)를 settings.json누른 다음Ctrl,설정 열기오른쪽 상단에 있는 아이콘:

설정 열기(JSON)

macOS 에서는 Ctrl.

Windows 코드 페이지를 나타내는 데 사용되는 "ANSI"라는 용어는 역사적 참조입니다. [...].
마이크로소프트는 아직도 사용하고 있다서유럽용 ANSI와 상호교환적으로 윈도우-1252, 예를 들어 notepad.exe일반적으로 에 있는 텍스트 편집기 에서 C:\WINDOWS\System32. 이것은 내가 따르는 규칙이기도 합니다. 또한보십시오이 답변.

4 좀 더 정확하게 말하자면,ASCII가 아닌 UTF-8 문자는 각각 다음을 사용합니다.적어도 2(최대 4)바이트.

5 다음을 포함하는 텍스트 파일이 있다고 가정합니다.오직순수 ASCII 문자. 텍스트 편집기에서 해당 파일을 열었을 때 상태 표시줄에 ANSI가 표시되어 있다고 해서 해당 파일이 ANSI라는 의미는 아닙니다.~ 아니다UTF-8로 인코딩되었습니다. 이는 단지 이 텍스트 편집기가 ANSI를기본 부호화. 기본 인코딩이 UTF-8인 경우 편집기는 상태 표시줄에 UTF-8을 표시합니다.같은 파일에 대해.

관련 정보