Categories
블로그

[IT] 유니코드 (Unicode)

유니코드는 다국어 프로그래밍을 지원합니다.

이것이 처음 만나는 어려움입니다.

유니코드라는 용어의 개념부터 시작하겠습니다.

조금 공부해 본 사람은 같은 것을 알 것입니다.

그렇다면 이러한 질문 중 유니코드무엇입니까? 이들 중 어느 것도 유니코드 자체가 아닙니다.

적어도 50점을 줄 수 있습니다.

이는 유니코드를 사용하는 인코딩 방법이기 때문입니다.

어떤 사람들은 유니코드가 아니라고 생각하고 어떤 사람들은 유니코드가 2바이트로 표현되는 문자 집합이 아니라고 생각합니다.

지금 혼란스럽다면 유니코드와 인코딩 방법을 혼동하고 있는 것입니다.

유니코드 키와 값이 에 매핑되는 형태의 코드입니다.

즉, 코드가 0매핑되는 것처럼 유니코드라는 이름으로 세계의 모든 문자 값은 특정 숫자 키와 자에 매핑됩니다.

전 세계의 캐릭터가 너무 많은 것 같습니다.

그러나 유니코드는 현재 0,216개의 공간을 사용하므로 가능하면 모두 포함합니다.

특히, 한자 전체의 수는 10만 개에 이를 것으로 추정되지만, 모든 한자가 포함되어 있지 않다는 점을 제외하면 전 세계 대부분의 문자가 유니코드에 포함되어 있다고 할 수 있습니다.

우리가 사용하는 한글의 경우 조합을 나타내는 글자와 완전한 한글이 모두 포함되어 있습니다.

유니코드 블록 유니코드는 너무 많아서 테이블처럼 이해하기 쉬운 테이블을 만들기가 어렵습니다.

따라서 블록으로만 분할된 테이블은 의미가 있습니다.

접두어인 경우 유니코드를 의미합니다.

0대문자 유니코드 테이블에서 찾으면 됩니다.

위에서 언급한 또는 같은 인코딩 방법은 이 유니코드 테이블의 숫자 키가 표현되는 방식에 따라 다릅니다.

예를 들어 가변 바이트를 사용하기 때문에 같이 1바이트로 표현할 수 있는 경우는 0표현한다.

반면, 16비트 또는 2바이트로 표현되기 때문에 0표현된다.

있지만 4바이트로 표현하기 때문에 041이 됩니다.

사실 인코딩 방식은 표현 방식에 따라 조금씩 다릅니다.

추가 콘텐츠 1 따라 0또는 0될 수 있습니다.

추가 내용 2 따라 0 또는 041이 됩니다.

따라서 표현이 일반적으로 효율적입니다.

표준으로 전 세계적으로 널리 사용됩니다.

이 두 인코딩 방식은 한글을 2바이트로 표현하기 위해 만들어졌습니다.

일부 한자도 포함되어 있습니다.

오래전부터 사용되어 왔지만 이 인코딩으로 표현할 수 없는 한글이 있어서 마이크로소프트에서 코드 949를 사용하기 시작했습니다.

더 많은 한글을 표현할 수 있으며 주로 사용됩니다.

따라서 확장이라고 볼 수 있습니다.

비교 예시를 통해 간단하게 비교해보자.

통해 위의 문자를 입력하고 저장합니다.

시스템 기본 설정이나 파일인코딩 설정에 따라 저장되는 인코딩 방식이 다릅니다.

파일 인코딩 확인 방법은 다음과 같습니다.

저장된 테스트 파일을 16진법 뷰어로 열어보자.

유니코드를 사용하는 인코딩 방법입니다

그런 다음 유니코드 표를 보고 비교하십시오.

유니코드 테이블 내부를 보면 있습니다.

참조 이 키의 인코딩 방식은 바이너리 형식으로 표현되며 그 중 하나가 먼저 바이너리로 풀면 다음과 같다.

그리고 이 한글 유니코드 블록은 3바이트로 표현된다.

이 코드를 형식으로 표현하면 위의 바이너리 값이 빨간색 영역에 하나씩 들어가 다음과 같이 된다.

위의 값과 다시 비교하면 이전 3바이트와 정확히 일치함을 알 수 있다.

후행 숫자 61 62 63 64는 1바이트 코드의 16진수 값과 일치합니다.

그리고 85 95는 녕을 의미합니다.

참조 30이제 표현의 표현 방법을 살펴보겠습니다.

먼저 저장된 테스트 파일을 변환해야 합니다.

명령을 사용하여 변환하겠습니다.

그리고 이전과 같이 변환된 텍스트의 값을 봅니다.

인코딩과 같은 인코딩에 대한 특별한 규칙은 없습니다.

코드와 마찬가지로 코드 테이블에서 일치하는 값을 찾으면 됩니다.

코드 테이블 내부를 보면 나옵니다.

중간 경우 128개의 코드가 배열된 테이블이 있습니다.

경우 2바이트로 표현할 수 있는 테이블이 있다.

같은 인코딩의 경우 시작하는 테이블이 있으며 이를 유니코드라고 합니다.

같은 인코딩은 동일한 유니코드 테이블을 다르게 표현하는 방식입니다.

위의 참조를 표현하면48 됩니다.

물론 유니코드 테이블에서 찾으면 동일합니다.

어, 이전에는 2바이트라고 했는데 왜 4바이트인가요? 이는 추후 논의될 인코딩 방식의 특성 때문이다.

추가 콘텐츠 및 인코딩에는 또는 같은 엔디안 속성이 있습니다.

문자열이 인코딩이 식별합니다.

경우 로 표현하고, 경우표현한다.

참고로 4바이트로 표현되기 때문에 이것도 4바이트 으로 표현한다.

이제 유니코드가 무엇인지 헷갈리지 말자.

유니코드는 코드 테이블입니다.

유니코드의 사용 문자를 표현하기 위해 영문과 한글의 완전한 형태의 코드로 사용되었습니다.

이 방법은 단순히 영어와 한국어를 위한 프로그램을 개발한다면 편리하지만, 게임의 글로벌 버전처럼 외국어를 지원해야 하는 경우에는 해당 국가의 언어에 맞는 코드로 변경해야 합니다.

그러나 유니코드가 세계 통합 언어 코드인 경우 추가 코드 변환 없이 문자만 변환하여 표현할 수 있습니다.

현재 유니코드는 업계 표준으로 정의되어 있으며 대부분의 응용 웹사이트, 텍스트 파일 등의 문자를 저장하고 표현하는 데 일반적으로 사용됩니다.

즉, 유니코드가 아니면 불필요한 프로세스 때문에 유니코드로 작업하는 것이 효율적입니다 읽고 쓸 때 유니코드로 변환하는 작업이 반복됩니다.

문자 표현 유형 단일 바이트 문자 집합 문자당 1바이트 영어는 128개 알파벳 모두를 표현할 수 있습니다.

다중 바이트 문자 집합 문자당 12바이트 영어 1바이트 2바이트 전체 와이드 바이트 문자 집합 한 문자 2바이트 이상 인코딩 방법 유니코드는 인코딩 방법 자체가 아니라 코드 테이블일 뿐입니다.

다음은 대표적인 유니코드 인코딩 방식입니다.

범용 코드화 문자 집합 변환 형식 8각 문자당 1바이트 한글의 경우 3바이트 영어 및 웹에서 일반적으로 사용 범용 코드화 문자 집합 변환 형식 16오해가 많은 부분은 유니코드의 한 문자가 2바이트라는 것입니다.

일반적으로 유니코드는 2바이트를 기준으로 하지만 모든 문자가 2바이트로 표현되는 것은 아니다

또한 유니코드는 인코딩의 경우 1바이트를 기준으로 합니다.

경우 대부분의 경우 표준입니다.

사용하는 유일한 변환하는 경우가 많습니다.

코드 일부 유니코드 파일에는 텍스트 스트림 시작 부분에 보이지 않는 23바이트 문자열이 있습니다.

바이트 오더 마크 유니코드 파일을 저장할 때 서명 옵션을 선택하면 코드를 추가할 수 있습니다.

각 코드의 의미는 다음과 같습니다.

없는 버전 관리가 편리합니다.

코드 텍스트를 로드할 때 이해할 수 없는 데이터가 있는 경우 코드인지 확인해야 합니다.

유니코드사용한 프로그래밍 현재 콘솔 응용 프로그램 프로젝트를 생성할 때 기본 설정으로 사용되므로 기존 문자 표현에 형식을 사용하는 프로그래밍 방법이 가능합니다.

기본이기 때문에 유니코드 사용에 익숙해져야 합니다.

및 대한 변경은 다음과 같이 프로젝트 속성에서 수행할 수 있습니다.

이와 같이 옵션을 변경하면 컴파일 옵션에 다음과 같은 정의가 설정된다.

멀티바이트 유니코드의 설정에 따른 변경은 컴파일 옵션에 정의가 포함되어 있는지 여부의 차이며, 이러한 이유로 다양한 헤더 파일의 전처리기 코드를 통해 유니코드에 적합한 코드로 변경됩니다.

따라서 유니코드 정의 여부에 따라 유니코드 버전용 함수 또는 확장 코드용 함수가 호출됩니다.

함수에 문자열을 입력하면 위와 같이 유니있습니다.

따라서 대부분의 함수는 함수 자체가 아닌 매크로 함수를 호출하는 형태입니다.

사용하여 와이드 문자를 사용하면 변환됩니다.

사용할 때 이렇게 하지 않으면 오류가 발생합니다.

평소에 사용하셔도 상관없습니다.

유니코드 기능을 사용할 때 다음과 같이 사용하십시오.

2타입으로 문자 유니코드를 지정하기 위해 문자나 문자열 앞에 기호 붙인다.

또한 컴파일러는 형식도 지원합니다.

이것은 편의를 위한 데이터 유형입니다.

간의 소스 코드 호환성을 위해 다음 매크로를 지원합니다.

위의 코드에서 알 수 있듯이 사용하면 유니코드 멀티 바이트에 관계없이 프로그래밍할 수 있습니다.

이러한 데이터 유형을 중립 데이터 유형이라고 합니다.

매크로 외에 존재하며 용도는 동일하다.

위의 코드는 프로젝트 설정에 따라 유니코드 정의 여부에 따라 변수로 지정됩니다.

함수 호출 시 유니코드 상태에 따라 다음과 같이 처리된다.

각 함수는 문자열 인수를 수신하며 차이점은 유형 또는 유형을 허용하는지 여부입니다.

런타임 라이브러리에는 기능과 같은 유니코드용 기능도 있습니다.

예를 들어, 같은 함수에는 유니코드에 대한 함수와 중립 데이터 유형에 대한 있습니다.

요약 사용 유니코드는 국가별 지원에 필수적입니다.

게다가 기본적으로 유니코드를 사용하므로 처리 속도가 훨씬 빠릅니다.

코드를 사용하는 경우 내부에서 다시 유니코드로 변경하여 처리하기 때문입니다.

문자열 함수의 보안 버전 사용 모든 문자열 함수에는 추가된 보안 함수가 있습니다.

문자열을 복사할 때 버퍼 오버플로 오버런을 방지하기 위해 문자열 버퍼의 길이를 알려줍니다.

문자열은 또는 배열이 아니라 문자의 배열입니다

문자열을 문자 또는 바이트 배열로 생각할 때 많은 실수가 발생합니다.

그냥 문자라고 생각하고 같은 문자열 포인터라는 중립적인 자료형을 사용해보자.

뉴트럴 데이터 타입을 사용하는 경우 등은 2바이트이므로 스트링 버퍼 크기 계산에 주의한다.

참고 위키백과 한글 인코딩 이해하기 1 유니코드 문자변환기.