인코딩 - 유니코드 등





로컬 인코딩 확인 및 설정

1️⃣ 현재 시스템의 로컬 인코딩을 확인하세요

Windows (cmd / PowerShell)

chcp

현재 코드 페이지가 표시됩니다:

Linux / macOS (Terminal)

locale

확인하다LANG또는LC_CTYPE값은 다음과 같습니다.

LANG=zh_TW.UTF-8
---

2️⃣ C++ 프로그램에서 현재 인코딩 확인

#include <clocale>
#include <iostream>

int main() {
    std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}

Windows에서는 일반적으로 다음과 같은 내용이 표시됩니다.C또는Chinese (Traditional)_Taiwan.950

---

3️⃣ 로컬 인코딩 설정

Windows 명령 프롬프트(cmd)

chcp 65001

→ 명령줄을 UTF-8로 전환합니다.

PowerShell

$OutputEncoding = [Console]::OutputEncoding = [Text.Encoding]::UTF8

C++ 프로그램 내에서 설정

#include <clocale>

정수 메인() {
    std::setlocale(LC_ALL, "zh_TW.UTF-8"); // UTF-8로 설정
}

또는 Windows에서 Big5를 설정하세요.

std::setlocale(LC_ALL, "Chinese_Taiwan.950");
---

4️⃣ 권장 설정



영구 코드 설정

1️⃣ 문제 배경

사용chcp 65001현재 명령 프롬프트(cmd)의 문자 인코딩은 일시적으로만 변경할 수 있습니다. 창이 닫히거나 다시 시작되면 기본값이 복원됩니다(예:950빅5). 전체 시스템과 모든 응용 프로그램에서 UTF-8을 사용하려면 Windows 시스템 수준에서 "지역 설정"을 수정해야 합니다.

---

2️⃣ UTF-8을 사용하도록 전체 Windows를 영구적으로 설정

1단계: 지역 설정 열기

  1. 켜다제어판
  2. 선택하다시계 및 지역 → 지역 (Region)
  3. 로 전환하다관리하다(관리) 페이지 매김
  4. 딸깍 하는 소리시스템 로캘 변경...

2단계: UTF-8 활성화

  1. 하단을 확인하세요.
    ✅ 베타: 전 세계 언어 지원을 위해 유니코드 UTF-8 사용(전 세계 언어 지원을 위해 유니코드 UTF-8 사용)
  2. 확인을 누르고 시스템을 다시 시작하세요.

다시 시작한 후 Windows 콘솔, C++, .NET, Python 및 기타 프로그램의 기본 로캘은 UTF-8입니다.

---

3️⃣ 효과가 있는지 확인해보세요

cmd에서 확인

chcp

표시되는 경우:

Active code page: 65001

이는 UTF-8이 기본값이 되었음을 의미합니다.

C++에서 유효성 검사

#include <clocale>
#include <iostream>

int main() {
    std::cout << "Current locale: " << std::setlocale(LC_ALL, nullptr) << std::endl;
}
---

4️⃣ 주의사항

---

5️⃣ 대안(시스템 수정 없이)

전체 시스템을 UTF-8로 변환하지 않으려면 특정 응용 프로그램에 대해 시작 매개변수나 프로그램 내 설정을 설정할 수 있습니다.

cmd /K chcp 65001
또는 프로그램 내에서 호출하십시오.
SetConsoleOutputCP(65001);
SetConsoleCP(65001);


Unicode escape sequences

기본 개념

유니코드 이스케이프 시퀀스는 순수 ASCII 문자를 사용하여 유니코드 문자를 표현하는 방법입니다. 프로그래밍 언어 소스 코드, JSON, 문자열 상수 및 플랫폼 간 데이터 교환에 일반적으로 사용됩니다. 이 표기법은 환경에서 특정 문자를 직접 입력하거나 표시할 수 없는 경우에 사용됩니다.

\u 형식

가장 일반적인 형식은\uXXXX,안에XXXX4자리 16진수입니다. 유니코드 코드 포인트를 나타냅니다.

\U 형식

일부 언어(Python 등)에서 지원\UXXXXXXXX, 8개의 16진수 숫자를 사용하여, 모든 유니코드 코드 포인트는 직접 표현될 수 있습니다.

에이전트 쌍 표현

16비트 유니코드만 지원하는 환경(예: JavaScript 레거시 사양)에서는 초과하다U+FFFF문자에는 서로게이트 쌍이 필요합니다.

공통 언어 예

JavaScript


const s = "\u4E2D\u6587";

Python


s = "\u4E2D\u6587"
s2 = "\U0001F600"

JSON


{
  "text": "\u4E2D\u6587"
}

언제 사용하나요?



URL Encoding

기본 개념

URL 인코딩(퍼센트 인코딩이라고도 함)은 문자를 URL에서 사용하기에 안전한 표현으로 변환하는 방법입니다. URL은 특정 ASCII 문자만 허용하며 나머지는 퍼센트와 16진수로 변환해야 합니다.

인코딩 형식

인코딩 형식은%HH,안에HH이 문자의 바이트 값을 16진수로 표현한 것입니다. 문자가 UTF-8에서 여러 바이트를 차지하는 경우 별도로 인코딩됩니다.

예약된 문자

URL의 일부 문자는 특별한 의미를 가지며 예약 문자라고 합니다. 인코딩이 필요한지 여부는 사용되는 위치에 따라 다릅니다.

예약되지 않은 문자

다음 문자는 인코딩 없이 URL에 직접 사용할 수 있습니다.

공통 언어 예

JavaScript

encodeURIComponent("중국어 테스트")
decodeURIComponent("%E4%B8%AD%E6%96%87%20test")

Python

urllib.parse에서 인용문 가져오기, 인용 해제

quote("중국어 테스트")
unquote("%E4%B8%AD%E6%96%87%20테스트")

더하기 기호와의 차이점

존재하다application/x-www-form-urlencoded형식에서는 공백 문자는 다음과 같이 인코딩됩니다.+,보다는%20. 일반 URL 경로에서는 여전히 사용됩니다.%20

언제 사용하나요?



Hexadecimal Escapes

기본 개념

16진수 이스케이프는 16진수 숫자를 사용하여 문자를 나타내는 방법입니다. 특정 바이트나 ASCII 문자를 나타내기 위해 프로그래밍 언어의 문자열 상수에 자주 사용됩니다.

\x 형식

가장 일반적인 형식은\xHH,안에HH는 2자리 16진수입니다. 일반적으로 ASCII 또는 단일 바이트 문자에 해당하는 바이트 값을 나타냅니다.

적용 범위

16진수 이스케이프는 대부분 단일 바이트 배열에서만 작동합니다. UTF-8로 인코딩된 멀티바이트 문자를 사용하는 경우 이를 여러 바이트로 분할해야 합니다.\xHH

공통 언어 지원

C / C++


char c = '\x41';

JavaScript


const s = "\x48\x65\x6C\x6C\x6F";

Python


s = "\x48\x65\x6C\x6C\x6F"

유니코드 이스케이프와의 차이점

언제 사용하나요?



ASCII 인코딩 테이블

ASCII Hex 대응표
0x00x10x20x30x40x50x60x70x80x90xA0xB0xC0xD0xE0xF
0x00NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSI
0x10DLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUS
0x20!"#$%&'()*+,-./
0x300123456789:;<=>?
0x40@ABCDEFGHIJKLMNO
0x50PQRSTUVWXYZ[\]^_
0x60`abcdefghijklmno
0x70pqrstuvwxyz{|}~DEL
0x80ÇüéâäàåçêëèïîìÄÅ
0x90ÉæÆôöòûùÿÖÜ¢£¥ƒ
0xA0áíóúñѪº¿¬½¼¡«»
0xB0
0xC0
0xD0
0xE0αßΓπΣσµτΦΘΩδφε
0xF0±÷°·²


모든 중국어 문자에 대한 유니코드 범위

유니코드의 한자는 주로 다음 섹션에 배포됩니다. 다음은 유니코드 표의 일반적인 중국어 문자(한자)의 범위와 각 범위에 대한 자세한 설명을 나열합니다.

유니코드 범위 설명

각 범위 목록

범위 이름 유니코드 범위 설명하다
CJK Unified Ideographs 4E00–9FFF 가장 일반적인 한자 범위인 기본 중국어, 일본어 및 한국어 문자가 포함되어 있습니다.
CJK Unified Ideographs Extension A 3400–4DBF 덜 일반적으로 사용되는 한자가 포함된 확장된 영역 A.
CJK Unified Ideographs Extension B 20000–2A6DF 확장된 B 영역은 주로 고대 문자와 일부 희귀 한자를 다루고 있습니다.
CJK Unified Ideographs Extension C 2A700–2B73F C지역을 확장하여 고대 캐릭터와 희귀 캐릭터를 더욱 확장하였습니다.
CJK Unified Ideographs Extension D 2B740–2B81F 확장 영역 D에는 거의 사용되지 않는 한자가 포함되어 있습니다.
CJK Unified Ideographs Extension E 2B820–2CEAF E 영역을 확장하여 주로 희귀한 한자를 추가합니다.
CJK Unified Ideographs Extension F 2CEB0–2EBEF 희귀한 고대 문자와 한자를 포함하여 F 영역을 확장했습니다.
CJK Unified Ideographs Extension G 30000–3134F 확장된 G 영역은 최근 추가된 한자 영역입니다.
CJK Compatibility Ideographs F900–FAFF 일본어 문자에 대한 다른 문자와 같은 이전 문자 집합 시스템과의 호환성을 위한 호환성 영역입니다.

요약

위에 나열된 범위에는 대부분의 한자가 포함되며 현대 한자, 고대 문자 및 호환 문자를 포함하여 다양한 요구를 충족하기 위해 다양한 영역에 배포됩니다. 중국어 글꼴 디자인 또는 문자 분석의 경우 이러한 범위는 완전한 글꼴 지원을 제공합니다.

Unicode Icons



  • UTF-8 문자 테이블


    email: [email protected]
    
    T:0000
    資訊與搜尋 | 回dev首頁
    email: Yan Sa [email protected] Line: 阿央
    電話: 02-27566655 ,03-5924828