cmd.exe에서 사용하는 인코딩/코드 페이지는 무엇입니까?
★★★★★★를 열면cmd.exe
Windows 에 windows windows 、 windows windows windows windows windows windows windows windows?
현재 어떤 인코딩을 사용하고 있는지 어떻게 확인할 수 있습니까?
지역 설정에 따라 달라지거나 환경변수를 확인할 수 있습니까?
특정 인코딩으로 파일을 입력하면 어떻게 됩니까?잘못된 인코딩으로 인해 문자가 깨질 수도 있고, 작동될 수도 있습니다.
하지만 나는 무슨 일이 일어나고 있는지 모르는 한 아무것도 믿지 않는다.★★★★★★★★★★★★★★★★★?
요. 때론 ,, 다, 증, 짜, 짜, 짜, 짜, 짜, 짜, 짜, 짜때로는type
다른 프로그램들은 횡설수설로 출력하기도 하고 그렇지 않을 수도 있습니다.
우선 Unicode 문자는 현재 콘솔 글꼴에 문자가 포함되어 있는 경우에만 표시됩니다.따라서 기본 Raster 글꼴 대신 Lucida Console과 같은 TrueType 글꼴을 사용합니다.
그러나 콘솔 글꼴에 표시하려는 문자가 포함되어 있지 않으면 횡설수설하는 대신 물음표가 표시됩니다.횡설수설하게 되면 폰트 설정뿐만 아니라 더 많은 일들이 일어납니다.
이 표준 C I하는 경우 C I/O는 다음과 같습니다.printf
프로그램의 출력 인코딩이 콘솔의 출력 인코딩과 일치해야 합니다.그렇지 않으면 횡설수설하게 됩니다. chcp
에 현재 코드 페이지를 표시 및 설정합니다. I/O한 모든 은 C-라이브러리 I/O가 하는 코드 것처럼 됩니다.chcp
.
프로그램의 출력 인코딩과 콘솔의 출력 인코딩을 일치시키는 방법은 두 가지가 있습니다.
은 콘솔의 수 .
chcp
또는, 그 인코딩으로 출력하도록 자신을 설정합니다.또는 은 콘솔의할 수 .
chcp
또는 프로그램의 기본 출력 인코딩과 일치시킵니다.
단, Win32 API를 사용하는 프로그램에서는 UTF-16LE 문자열을 직접 콘솔에 쓸 수 있습니다.코드 페이지를 설정하지 않고 올바른 출력을 얻을 수 있는 유일한 방법입니다.또한 이 함수를 사용하는 경우에도 문자열이 UTF-16LE 인코딩에 포함되어 있지 않은 경우 Win32 프로그램은 올바른 코드 페이지를 에 전달해야 합니다.또,WriteConsoleW
프로그램의 출력이 리다이렉트 되면 동작하지 않기 때문에, 이 경우는 더 많은 조작이 필요합니다.
type
는 UTF-16LE Byte Order Mark(BOM; UTF-16LE 바이트 순서 마크)의 각 파일의 시작을 체크하기 때문에, 어느 정도 동작합니다.0xFF 0xFE
의 유니코드 WriteConsoleW
현재 코드 페이지와 무관합니다. ★★★★★★★★★★★★★★★★★★.type
BOM이 비 ASCUTF-16LE BOM을 사용하는 를 .WriteConsoleW
: 콘솔 코드 페이지와 프로그램 출력 인코딩을 서로 일치하도록 설정해야 합니다.
어떻게 하면 알 수 있을까요?
다음은 유니코드 문자가 포함된 테스트 파일입니다.
ASCII abcde xyz
German äöü ÄÖÜ ß
Polish ąęźżńł
Russian абвгдеж эюя
CJK 你好
이것은 테스트 파일을 여러 유니코드 인코딩으로 출력하는 자바 프로그램입니다. 언어로 사용할 수하는 것은 ASCII 입니다.stdout
.
import java.io.*;
public class Foo {
private static final String BOM = "\ufeff";
private static final String TEST_STRING
= "ASCII abcde xyz\n"
+ "German äöü ÄÖÜ ß\n"
+ "Polish ąęźżńł\n"
+ "Russian абвгдеж эюя\n"
+ "CJK 你好\n";
public static void main(String[] args)
throws Exception
{
String[] encodings = new String[] {
"UTF-8", "UTF-16LE", "UTF-16BE", "UTF-32LE", "UTF-32BE" };
for (String encoding: encodings) {
System.out.println("== " + encoding);
for (boolean writeBom: new Boolean[] {false, true}) {
System.out.println(writeBom ? "= bom" : "= no bom");
String output = (writeBom ? BOM : "") + TEST_STRING;
byte[] bytes = output.getBytes(encoding);
System.out.write(bytes);
FileOutputStream out = new FileOutputStream("uc-test-"
+ encoding + (writeBom ? "-bom.txt" : "-nobom.txt"));
out.write(bytes);
out.close();
}
}
}
}
기본 코드 페이지 출력은?완전 쓰레기야!
Z:\andrew\projects\sx\1259084>chcp
Active code page: 850
Z:\andrew\projects\sx\1259084>java Foo
== UTF-8
= no bom
ASCII abcde xyz
German ├ñ├Â├╝ ├ä├û├£ ├ƒ
Polish ąęźżńł
Russian ð░ð▒ð▓ð│ð┤ðÁð ÐìÐÄÐÅ
CJK õ¢áÕÑ¢
= bom
´╗┐ASCII abcde xyz
German ├ñ├Â├╝ ├ä├û├£ ├ƒ
Polish ąęźżńł
Russian ð░ð▒ð▓ð│ð┤ðÁð ÐìÐÄÐÅ
CJK õ¢áÕÑ¢
== UTF-16LE
= no bom
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ♣☺↓☺z☺|☺D☺B☺
R u s s i a n 0♦1♦2♦3♦4♦5♦6♦ M♦N♦O♦
C J K `O}Y
= bom
■A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ♣☺↓☺z☺|☺D☺B☺
R u s s i a n 0♦1♦2♦3♦4♦5♦6♦ M♦N♦O♦
C J K `O}Y
== UTF-16BE
= no bom
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣☺↓☺z☺|☺D☺B
R u s s i a n ♦0♦1♦2♦3♦4♦5♦6 ♦M♦N♦O
C J K O`Y}
= bom
■ A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣☺↓☺z☺|☺D☺B
R u s s i a n ♦0♦1♦2♦3♦4♦5♦6 ♦M♦N♦O
C J K O`Y}
== UTF-32LE
= no bom
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ♣☺ ↓☺ z☺ |☺ D☺ B☺
R u s s i a n 0♦ 1♦ 2♦ 3♦ 4♦ 5♦ 6♦ M♦ N
♦ O♦
C J K `O }Y
= bom
■ A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ♣☺ ↓☺ z☺ |☺ D☺ B☺
R u s s i a n 0♦ 1♦ 2♦ 3♦ 4♦ 5♦ 6♦ M♦ N
♦ O♦
C J K `O }Y
== UTF-32BE
= no bom
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣ ☺↓ ☺z ☺| ☺D ☺B
R u s s i a n ♦0 ♦1 ♦2 ♦3 ♦4 ♦5 ♦6 ♦M ♦N
♦O
C J K O` Y}
= bom
■ A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣ ☺↓ ☺z ☺| ☺D ☺B
R u s s i a n ♦0 ♦1 ♦2 ♦3 ♦4 ♦5 ♦6 ♦M ♦N
♦O
C J K O` Y}
만약 가 '나'나 '나'나 '나'나 '나'나 '나'로 하면?type
★★★★★★★★★★★★★★★★★?이러한 바이트에는 콘솔에 인쇄된 바이트와 동일한 바이트가 포함되어 있습니다.
Z:\andrew\projects\sx\1259084>type *.txt
uc-test-UTF-16BE-bom.txt
■ A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣☺↓☺z☺|☺D☺B
R u s s i a n ♦0♦1♦2♦3♦4♦5♦6 ♦M♦N♦O
C J K O`Y}
uc-test-UTF-16BE-nobom.txt
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣☺↓☺z☺|☺D☺B
R u s s i a n ♦0♦1♦2♦3♦4♦5♦6 ♦M♦N♦O
C J K O`Y}
uc-test-UTF-16LE-bom.txt
ASCII abcde xyz
German äöü ÄÖÜ ß
Polish ąęźżńł
Russian абвгдеж эюя
CJK 你好
uc-test-UTF-16LE-nobom.txt
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ♣☺↓☺z☺|☺D☺B☺
R u s s i a n 0♦1♦2♦3♦4♦5♦6♦ M♦N♦O♦
C J K `O}Y
uc-test-UTF-32BE-bom.txt
■ A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣ ☺↓ ☺z ☺| ☺D ☺B
R u s s i a n ♦0 ♦1 ♦2 ♦3 ♦4 ♦5 ♦6 ♦M ♦N
♦O
C J K O` Y}
uc-test-UTF-32BE-nobom.txt
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ☺♣ ☺↓ ☺z ☺| ☺D ☺B
R u s s i a n ♦0 ♦1 ♦2 ♦3 ♦4 ♦5 ♦6 ♦M ♦N
♦O
C J K O` Y}
uc-test-UTF-32LE-bom.txt
A S C I I a b c d e x y z
G e r m a n ä ö ü Ä Ö Ü ß
P o l i s h ą ę ź ż ń ł
R u s s i a n а б в г д е ж э ю я
C J K 你 好
uc-test-UTF-32LE-nobom.txt
A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ♣☺ ↓☺ z☺ |☺ D☺ B☺
R u s s i a n 0♦ 1♦ 2♦ 3♦ 4♦ 5♦ 6♦ M♦ N
♦ O♦
C J K `O }Y
uc-test-UTF-8-bom.txt
´╗┐ASCII abcde xyz
German ├ñ├Â├╝ ├ä├û├£ ├ƒ
Polish ąęźżńł
Russian ð░ð▒ð▓ð│ð┤ðÁð ÐìÐÄÐÅ
CJK õ¢áÕÑ¢
uc-test-UTF-8-nobom.txt
ASCII abcde xyz
German ├ñ├Â├╝ ├ä├û├£ ├ƒ
Polish ąęźżńł
Russian ð░ð▒ð▓ð│ð┤ðÁð ÐìÐÄÐÅ
CJK õ¢áÕÑ¢
동작하는 것은 BOM이 포함된 UTF-16LE 파일뿐입니다.type
.
의 것을 type
파일을 인쇄하면, 가비지가 됩니다.
Z:\andrew\projects\sx\1259084>copy uc-test-UTF-16LE-bom.txt CON
■A S C I I a b c d e x y z
G e r m a n õ ÷ ³ ─ Í ▄ ▀
P o l i s h ♣☺↓☺z☺|☺D☺B☺
R u s s i a n 0♦1♦2♦3♦4♦5♦6♦ M♦N♦O♦
C J K `O}Y
1 file(s) copied.
볼 때copy CON
에서는 Unicode가.Unicode는 Unicode라고 할수.★★★★★★★★★★★★★★★★,type
명령어에는 파일 시작 부분에서 UTF-16LE BOM을 검출하여 특별한 Windows API를 사용하여 출력하는 로직이 있습니다.
알 수 요.cmd.exe
가 it버 in in로 되어 때type
일일: :
★★★ type
, 이 「」, 「BOM」인지 합니다.0xFEFF
: " " , " "0xFF 0xFE
- BOM이 little-endian - BOM으로 합니다.type
「」를 합니다.fOutputUnicode
이 에 플래그를 됩니다. 이 플래그는 나중에 체크하여 콜 여부를 결정합니다.WriteConsoleW
.
그게type
Unicode "BOM" "UTF-16LE" "BOM" "UTF-16LE" "Unicode" 입니다.다른 모든 파일 및 콘솔 출력을 처리하는 특별한 코드가 없는 프로그램의 경우 파일은 현재 코드 페이지에 따라 해석되며 횡설수설로 표시될 수 있습니다.
하면 수 요.type
유니코드
#include <stdio.h>
#define UNICODE
#include <windows.h>
static LPCSTR lpcsTest =
"ASCII abcde xyz\n"
"German äöü ÄÖÜ ß\n"
"Polish ąęźżńł\n"
"Russian абвгдеж эюя\n"
"CJK 你好\n";
int main() {
int n;
wchar_t buf[1024];
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
n = MultiByteToWideChar(CP_UTF8, 0,
lpcsTest, strlen(lpcsTest),
buf, sizeof(buf));
WriteConsole(hConsole, buf, n, &n, NULL);
return 0;
}
이 프로그램은 기본 코드 페이지를 사용하여 Windows 콘솔에서 Unicode를 인쇄하기 위해 작동합니다.
샘플 Java 프로그램의 경우 코드 페이지를 수동으로 설정함으로써 약간의 정확한 출력을 얻을 수 있습니다.단, 출력은 이상하지만,
Z:\andrew\projects\sx\1259084>chcp 65001
Active code page: 65001
Z:\andrew\projects\sx\1259084>java Foo
== UTF-8
= no bom
ASCII abcde xyz
German äöü ÄÖÜ ß
Polish ąęźżńł
Russian абвгдеж эюя
CJK 你好
ж эюя
CJK 你好
你好
好
�
= bom
ASCII abcde xyz
German äöü ÄÖÜ ß
Polish ąęźżńł
Russian абвгдеж эюя
CJK 你好
еж эюя
CJK 你好
你好
好
�
== UTF-16LE
= no bom
A S C I I a b c d e x y z
…
단, Unicode UTF-8 코드 페이지를 설정하는 C 프로그램:
#include <stdio.h>
#include <windows.h>
int main() {
int c, n;
UINT oldCodePage;
char buf[1024];
oldCodePage = GetConsoleOutputCP();
if (!SetConsoleOutputCP(65001)) {
printf("error\n");
}
freopen("uc-test-UTF-8-nobom.txt", "rb", stdin);
n = fread(buf, sizeof(buf[0]), sizeof(buf), stdin);
fwrite(buf, sizeof(buf[0]), n, stdout);
SetConsoleOutputCP(oldCodePage);
return 0;
}
올바른 출력이 있습니다.
Z:\andrew\projects\sx\1259084>.\test
ASCII abcde xyz
German äöü ÄÖÜ ß
Polish ąęźżńł
Russian абвгдеж эюя
CJK 你好
이야기의 교훈은?
type
는, 의 코드 , BOM 를 을 인쇄할 수 .- 은 Win32 Unicode를 사용하여 할 수 .
WriteConsoleW
. - 코드 페이지를 설정하고 그에 따라 출력 인코딩을 조정하는 다른 프로그램은 프로그램 시작 시 코드 페이지가 무엇이었든 콘솔에 Unicode를 인쇄할 수 있습니다.
- 의 모든 에 대해서는, 「 수 없다」를 가지고 .
chcp
또, 여전히 이상한 출력이 출력될 가능성이 있습니다.
유형
chcp
(Dewfy가 이미 말했듯이) 현재 코드 페이지를 확인합니다.
사용하다
nlsinfo
설치된 모든 코드 페이지를 확인하고 코드 페이지 번호가 무엇을 의미하는지 확인합니다.
「Windows Server 2003」을 하려면 , 2003 인스톨 할가 있습니다 XP 로 합니다.nlsinfo
.
두 번째 질문에 답하려면인코딩이 어떻게 작동하는지, Joel Spolsky는 이것에 대한 훌륭한 소개 기사를 썼다.강력추천합니다.
Windows 코드 페이지의 문제, C 프로그램의 휴대성 및 현지화 문제로 인해 오랫동안 좌절해 왔습니다.지금까지의 투고에서는, 문제가 상세하게 기술되어 있기 때문에, 이 점에 대해서는 아무것도 추가하지 않습니다.
요약하자면, 결국 Visual C++ 표준 C 라이브러리 위에 UTF-8 호환 라이브러리 레이어를 작성하게 되었습니다.기본적으로 이 라이브러리는 UTF-8을 내부적으로 사용하여 표준 C 프로그램이 모든 코드 페이지에서 올바르게 작동하도록 보장합니다.
MsvcLibX라는 이름의 이 라이브러리는 https://github.com/JFLarvoire/SysToolsLib에서 오픈 소스로 사용할 수 있습니다.주요 기능:
- 일반 char[] C 문자열 및 표준 C 라이브러리 API를 사용하여 UTF-8로 인코딩된 C 소스.
- 모든 코드 페이지에서 main() 루틴 argv[를 포함한 모든 것이 UTF-8로 내부적으로 처리되며 표준 입력 및 출력이 자동으로 올바른 코드 페이지로 변환됩니다.
- 모든 stdio.h 파일 함수는 260자 이상의 UTF-8 경로 이름을 지원합니다.실제로는 최대 64 KByte입니다.
- Windows 에서는 Visual C++, MsvcLibX 및 Visual C++ C 라이브러리를 사용하여 동일한 소스를 컴파일 및 링크할 수 있으며 Linux 에서는 gcc 및 Linux 표준 C 라이브러리를 사용하여 #ifdef...를 사용할 필요가 없습니다.#endif 블록.
- Linux에서는 공통이지만 Visual C++에서는 누락된 포함 파일을 추가합니다.예: unistd.h
- 디렉토리 I/O, 심볼릭링크 관리 등 누락된 기능을 모두 UTF-8 지원(물론:-)으로 추가합니다.
라이브러리를 빌드하고 자신의 프로그램에서 사용하는 방법 등 GitHub의 MsvcLibX README에 대한 자세한 내용은 다음과 같습니다.
위의 GitHub 저장소의 릴리스 섹션은 이 MsvcLibX 라이브러리를 사용하는 여러 프로그램을 제공하며, 이러한 프로그램들은 그 기능을 보여줄 것입니다.예: PATH에 ASCII가 아닌 이름의 디렉토리가 있는 which.exe 도구를 사용하여 ASCII가 아닌 이름의 프로그램을 검색하고 코드 페이지를 변경합니다.
conv.exe를 사용합니다.이 프로그램은 모든 코드 페이지에서 다른 페이지로 데이터 스트림을 쉽게 변환할 수 있습니다.기본값은 Windows 코드페이지에 입력되어 현재 콘솔코드페이지에 출력됩니다. GUI : 메모장 표시할 수 GUI 어플리케이션(예: "메모장")은 다음과 같은 간단한 합니다.type WINFILE.txt | conv
이 MsvcLibX 라이브러리는 결코 완전하지 않습니다.개선을 위한 공헌을 환영합니다!
명령 CHCP는 현재 코드 페이지를 표시합니다.숫자 8xx는 3자리이며 Windows 12xx와는 다릅니다.따라서 영문만 입력해도 아무런 차이가 없지만 확장 코드 페이지(키릴 문자 등)가 잘못 인쇄됩니다.
%HOMEPATH%\init.cmd라고 합니다.
저는 다음과 같이 쓰고 있습니다.
@ECHO OFF
CHCP 65001 > nul
자바에서는 IBM850 인코딩을 사용하여 파일을 썼습니다.그것으로 문제가 해결되었다.
- . 단답 - 단답 - 단답cmd.exe
디폴트로 ANSI 인코딩을 사용합니다.
부인.여기서의 어떠한 제안도 따르는 것은 당신의 책임입니다.
" " " 를 하여 합니다..reg
적절한 이름을 가진 파일:
Windows Registry Editor Version 5.00
;; https://stackoverflow.com/a/75788701
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"Autorun"="C:\\Windows\\System32\\chcp.com 1252"
이 바로 이 쪽입니다.CMD-CodePage-1252-Restore.reg
삭제:
Windows Registry Editor Version 5.00
;; https://stackoverflow.com/a/75788701
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"Autorun"=-
2. 장황한 답변– 모든 질문에 대한 답변 시도
★★★★★★를 열면
cmd.exe
Windows 에 windows windows 、 windows windows windows windows windows windows windows windows?
로는– " " " "cmd.exe
는 코드 페이지 437을 사용합니다.내 생각에 이것은 끔찍한 선택이다.
대신 당신의 언어의 ANSI 코드 페이지를 사용하는 것이 좋습니다.– Microsoft 자체 네이티브 텍스트 에디터의 ANSI 인코딩과 호환됩니다.C:\WINDOWS\System32\notepad.exe
서유럽 언어에서 ANSI는 코드 페이지 1252 또는 Windows-1252(CP-1252)를 의미합니다.
다른 언어 그룹에 대해서는 이 답변 끝에 표를 올렸습니다.
현재 어떤 인코딩을 사용하고 있는지 어떻게 확인할 수 있습니까?
– ★★C:\WINDOWS\System32\chcp.com
:
C:\>chcp
Active code page: 1252
1252
437
제 경우엔, 제가 고의로cmd.exe
1252년위의 "짧은" 답변에서 설명한 바와 같습니다.
지역 설정에 따라 달라지거나 환경변수를 확인할 수 있습니까?
- 둘 다 아니에요.이 문맥에서 관련된 것은 언어입니다.다음을 시도했습니다.
WinKey + i > 시간 및 언어 > 언어 > 우선 언어 > 언어 추가.스웨덴어(스웨덴어)를 추가하고 Windows 표시 언어에서 스웨덴어를 선택했는지 확인했습니다.
하여 열었습니다.cmd.exe
라고 입력합니다.chcp
를 누릅니다.반응은Active code page: 437
따라서 Windows 표시 언어가 Windows의 언어를 변경하더라도 코드 페이지에는 영향을 주지 않는 것으로 보입니다.cmd.exe
사용.
특정 인코딩으로 파일을 입력하면 어떻게 됩니까?
잘못된 인코딩으로 인해 문자가 깨질 수도 있고, 작동될 수도 있습니다.
- - 그렇죠. - 그렇죠. - 그렇죠.를 들어,"" " " " " " " 가 있습니다.Some-ANSI-chars.txt
스웨덴어 글자가 들어있다.å
★★★★★★★★★★★★★★★★★」ä
코드 페이지1252로 부호화되어 있으며 ANSI로 부호화되어 있습니다.
가 가 type
파일cmd.exe
되어 있습니다 , 웨덴덴문 , , , , , 。
C:\stackexchange\stackoverflow\Char-encoding>type Some-ANSI-chars.txt
Sakta men säkert vinner basinkomst mark,
och det viktigaste just nu är att hålla ihop.
그러나 파일을 복사하여 UTF-8로 변환하면 (ASCII가 아닌) 스웨덴 문자마다 두 개의 문자가 인쇄됩니다.
C:\stackexchange\stackoverflow\Char-encoding>type Some-UTF-8-chars.txt
Sakta men säkert vinner basinkomst mark,
och det viktigaste just nu är att hålla ihop.
바와 같이 의 문자 「Da'ta' UTF-8' '2'å
★★★★★★★★★★★★★★★★★」ä
각각 2바이트를 사용합니다. type
는 "decodes"를 디코딩합니다.å
★★★★★★★★★★★★★★★★★」ä
각각 2개의 의미 없는 1바이트 문자를 표시하다Ã¥
★★★★★★★★★★★★★★★★★」ä
이런 은 거의 않기 에 전혀가 되지 않습니다. 왜냐하면 나는 거의type
내 텍스트 파일의 내용
중요한 것은 내가 가장 좋아하는 텍스트 에디터가 내 파일을 UTF-8로 디코딩하도록 설정되어 있다는 것이다.
하지만 나는 무슨 일이 일어나고 있는지 모르는 한 아무것도 믿지 않는다.
참 - 잘 알겠습니다. 것을 cmd.exe
65001번지
UTF-8 인코딩을 사용하지 않는 이유cmd.exe
- Windows 코드 페이지 65001 (2011)에 심각한 구현 오류가 있습니다.
- 코드 페이지 65001 …은 지원되지 않습니다(2012).
chcp 65001
는 UTF-8 디코딩을 일부 제공하지만 매우 기초적이고 적절한 입력을 제공하지 않습니다(2016).- 인코딩이 65001(2016)과 같이 지원되지 않는 멀티바이트 코드 페이지로 설정되면 Windows 콘솔에 버그가 가득합니다.
- 코드 페이지 65001에서는 모든 버전의 Windows 콘솔(Windows 10의 새 콘솔도)에서 ASCII 이외의 입력(2017)을 지원하지 않습니다.
chcp 65001
매우 위험합니다(2017년).- 배치 스크립트(2019)를 일시적으로 사용하지 마십시오.
- Beta: Unicode UTF-8을 사용하여 전 세계 언어 지원을 받을 수 있습니다.서버 2019(2021년)에서는 정상적으로 동작하고 있던 일부 낡고 형편없는 프로그램의 기능이 손상되었습니다.
MSYS2를 대체 명령줄 유틸리티로 사용하는 것을 검토하다
UTF-8 인코딩된 파일의 텍스트를 올바르게 출력하는 명령줄 도구가 절실히 필요한 경우 기본적으로 텍스트 파일이 UTF-8 인코딩된 것으로 가정하는 Linux 스타일의 MSYS2를 다운로드하여 설치할 것을 권장합니다.
UTF-8 문자는 모두 올바르게 렌더링 되어 있습니다만, 다음의 점에 주의해 주세요.
$ cat Some-UTF-8-chars.txt
Sakta men säkert vinner basinkomst mark,
och det viktigaste just nu är att hålla ihop.
(ASC 이외)II) 대신 ANSI 문자가 물음표로 출력됩니다.
$ cat Some-ANSI-chars.txt
Sakta men s�kert vinner basinkomst mark,
och det viktigaste just nu �r att h�lla ihop.
ㅇㅇㅇㅇㅇㅇㅇ,cmd.exe
ANSI 부호화 파일을 올바르게 출력합니다.
MSYS2 단말기는 UTF-8 부호화 파일을 올바르게 출력합니다.
레퍼런스
- 「 」를 추가하는 것을
"Autorun"="chcp 1252>>nul"
- 코드 페이지 437 (IBM PC)
- 10개의 다른 언어 그룹에 대한 ANSI 인코딩 테이블을 포함하는 게시물
- UTF-8에서의 부호화와 UTF-8로의 변환의 차이를 설명하는 투고
- Notepad2 | 다운로드 페이지
- 메모장++ | 다운로드 페이지
- Visual Studio Code | 다운로드 페이지
- Windows 코드 페이지 65001의 심각한 구현 오류
- 코드 페이지 65001은 지원되지 않습니다.
chcp 65001
UTF-8 복호화 기능을 제공하지만 매우 기초적입니다.- Windows 콘솔에는 코드 페이지 65001의 버그(for)
- 코드 페이지 65001 …은 ASCII 이외의 입력을 지원하지 않습니다.
chcp 65001
- 「 」를하지 주세요.
chcp.com 65001
- 베타판: Unicode UTF-8이 고장났습니다…몇 가지 오래된 프로그램…
- MSYS2 | 다운로드 페이지
- ANSI-chars 몇 개.txt
- 일부 UTF-8-chars.txt
1 그.reg
file은 이 답변에서 영감을 얻었습니다.레지스트리에서 같은 것을 수동으로 실행하는 방법을 알고 있다고 생각합니다.
이 이미 Autorun
은 PowerShell에주지 PowerShell을 실행합니다.– PowerShell을 실행합니다.chcp
· 「 」를 기대하고 Active code page: 437
코드 는 제 입니다..bat
파일도 참조해 주세요.99%의 ASCII를 사용합니다.
2 이 실험을 할 때, 저는 이 실험의 대상이Autorun
보다 낮은 값HKLM\SOFTWARE\Microsoft\Command Processor
를 참조해 주세요.
3 정확히는 메모장2, 메모장++, Visual Studio Code 등 세 가지 "즐겨찾기" 텍스트 편집기가 있습니다.
이 세 가지 중 Visual Studio 코드는 모든 파일을 UTF-8로 인코딩하도록 설정되어 있으며, 반면 Notepad2와 Notepad++는 UTF-8에 의해 인코딩됩니다.
에디터가 옳다고 생각하는 인코딩을 자동 검출합니다.
4 제 "단답"에 레지스트리 해킹을 채택했다면요
언급URL : https://stackoverflow.com/questions/1259084/what-encoding-code-page-is-cmd-exe-using
'source' 카테고리의 다른 글
렌더링 시간과 성능 측면에서 패널이 가장 효율적인 순서는 무엇입니까? (0) | 2023.04.16 |
---|---|
치명적 오류: 클래스에 구현되지 않은 이니셜라이저 'init(코더:)'을 사용합니다. (0) | 2023.04.16 |
XAML에서 Canvas's Children 속성을 바인딩할 수 있습니까? (0) | 2023.04.16 |
XlsxWriter 개체는 Django에서 다운로드를 생성하기 위해 http 응답으로 저장됩니다. (0) | 2023.04.16 |
WPF MVVM 패턴을 사용한 뷰 탐색 (0) | 2023.04.16 |