C 언어를 사용하여 중국어 문자와 ASCII 코드를 유니코드 코드로 변환하는 방법은 무엇입니까?
인코딩 변환을 달성하려면 MultiByteToWideChar 및 WideCharToMultiByte를 사용하세요.
MultiByteToWideChar는 문자열을 와이드 문자(유니코드) 문자열에 매핑하는 Windows API 함수입니다. 함수 프로토타입:
int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
) 매개변수:
CodePage: 변환을 수행할 문자 세트를 지정합니다. this 매개변수에는 시스템에 설치되어 있거나 유효한 모든 문자 집합에 대한 값이 제공될 수 있습니다. 다음 값 중 하나로 지정할 수도 있습니다.
CP_ACP: ANSI 문자 집합, CP_MACCP: Macintosh 코드 페이지, CP_OEMCP: OEM 코드 페이지,
CP_SYMBOL: 기호 문자 집합( 42); CP_THREAD_ACP: 현재 스레드 ANSI 코드 페이지;
CP_UTF7: UTF-7 변환 사용 CP_UTF8: UTF-8 변환 사용.
dwFlags: 미리 만들어진 문자 또는 와이드 문자(결합된 형식이 있는 경우)로 변환할지 여부, 제어 문자 대신 상형 문자를 사용할지 여부, 유효하지 않은 문자를 처리하는 방법을 나타내는 비트 플래그 집합입니다. 다음과 같은 의미를 갖는 태그된 상수의 조합을 지정할 수 있습니다:
MB_PRECOMPOSED: 일반적으로 미리 만들어진 문자, 즉 기본 문자와 단일 문자 값을 갖는 null이 아닌 문자로 구성된 문자를 사용합니다. . 이것이 기본 변환 선택입니다.
MB_COMPOSITE 값과 함께 사용할 수 없습니다.
MB_COMPOSITE: 일반적으로 결합 문자를 사용합니다. 즉, 기본 문자와 널이 아닌 문자로 구성된 문자는 서로 다른 문자 값을 갖습니다. MB_PRECOMPOSED 값과 함께 사용할 수 없습니다.
MB_ERR_INVALID_CHARS: 함수가 유효하지 않은 입력 문자를 발견하면 실패하고 GetLastErro는 ERROR_NO_UNICODE_TRANSLATION 값을 반환합니다.
MB_USEGLYPHCHARS: 제어 문자 대신 상형 문자를 사용합니다.
결합 문자는 기본 문자와 널이 아닌 문자로 구성되며 각각 다른 문자 값을 갖습니다. 각 사전 제작된 문자에는 기본/널이 아닌 문자 구성에 지정된 단일 문자 값이 있습니다. 문자 è에서 e는 기본 문자이고 악센트 표시는 공백이 아닌 문자입니다.
함수의 기본 동작은 준비된 형식으로 변환하는 것입니다. 준비된 양식이 없으면 함수는 결합된 양식으로 변환을 시도합니다.
MB_PRECOMPOSED 및 MB_COMPOSITE 플래그는 상호 배타적이지만 MB_USEGLYPHCHARS 및 MB_ERR_INVALID_CHARS 플래그는 다른 플래그와 관계없이 설정할 수 있습니다.
lpMultiByteStr: 변환할 문자열의 문자를 가리킵니다.
cchMultiByte: lpMultiByteStr 매개변수가 가리키는 문자열의 바이트 수를 지정합니다.
lpMultiByteStr에 지정된 문자열이 널 문자로 끝나는 경우 -1로 설정될 수 있습니다(문자열이 널 문자로 끝나지 않으면 -1로 설정하면 실패하거나 성공할 수 있음). 매개변수는 0으로 설정됩니다.
lpWideCharStr: 변환된 문자열을 수신하는 버퍼를 가리킵니다.
cchWideChar: lpWideCharStr 매개변수가 가리키는 버퍼의 와이드 문자 수를 지정합니다. 이 값이 0이면 함수는 버퍼에 필요한 와이드 문자 수를 반환하며, 이 경우 lpWideCharStr의 버퍼는 사용되지 않습니다. 반환 값:
함수가 성공적으로 실행되고 cchWideChar가 0이 아닌 경우 반환 값은 lpWideCharStr이 가리키는 버퍼에 기록된 와이드 문자 수입니다. 함수가 성공적으로 실행되고 cchWideChar가 0이면 반환 값 버퍼가 변환할 문자열을 수신하는 데 필요한 와이드 문자 수입니다. 함수가 실패하면 반환 값은 0입니다. 더 많은 오류 정보를 얻으려면 GetLastError 함수를 호출하세요. 다음 오류 코드를 반환할 수 있습니다:
ERROR_INVALID_PARAMETER;
WideCharToMultiByte, 이 함수는 유니코드 문자열을 멀티바이트 문자열로 매핑합니다.
함수 프로토타입:
int WideCharToMultiByte(
UINT CodePage, //변환을 수행할 코드 페이지 지정
DWORD dwFlags, / / 발음 구별 부호(예: 악센트)를 사용하는 문자에 영향을 미치는 추가 제어를 허용합니다.
LPCWSTR lpWideCharStr, //와이드 바이트 문자열로 변환할 버퍼를 지정합니다.
int cchWideChar, //lpWideCharStr 매개변수가 가리키는 버퍼의 문자 수를 지정합니다.
LPSTR lpMultiByteStr, //변환된 문자열을 받는 버퍼를 가리킵니다.
int cchMultiByte, / /lpMultiByteStr 매개변수가 가리키는 버퍼의 최대값 지정
LPCSTR lpDefaultChar, //변환할 수 없는 와이드 문자를 발견하면 함수는 pDefaultChar 매개변수가 가리키는 문자를 사용합니다. p>
LPBOOL pfUsedDefaultChar //최소 하나의 문자를 멀티바이트 형식으로 변환할 수 없습니다. 함수는 이 변수를 TRUE로 설정합니다.
);
매개변수:
CodePage: 변환을 수행할 코드 페이지를 지정합니다. 이 매개변수는 시스템에 설치되어 있거나 유효한 코드 페이지에서 제공하는 값일 수 있습니다.
다음 값 중 하나를 지정할 수도 있습니다.
CP_ACP: ANSI 코드 페이지, CP_MACCP: Macintosh 코드 페이지, CP_OEMCP: OEM 코드 페이지,
CP_SYMBOL: 기호 코드 페이지( 42) ; CP_THREAD_ACP: 현재 스레드 ANSI 코드 페이지;
CP_UTF7: UTF-7 변환 사용 CP_UTF8: UTF-8 변환 사용
반환 값:
함수가 성공적으로 실행되고 cchMultiByte가 0이 아닌 경우 반환 값은 lpMultiByteStr이 가리키는 버퍼에 기록된 바이트 수입니다. 함수가 성공적으로 실행되고 cchMultiByte가 0인 경우 반환 값은 변환할 문자열을 수신한 버퍼입니다. 필요한 바이트 수입니다. 함수가 실패하면 반환 값은 0입니다. 더 많은 오류 정보를 얻으려면 GetLastError 함수를 호출하세요. 아래 나열된 오류 코드를 반환할 수 있습니다:
ERROR_INVALID_PARAMETER;
참고: lpMultiByteStr 및 lpWideCharStr 포인터는 달라야 합니다. 그렇다면 함수는 실패하고 GetLastError는 ERROR_INVALID_PARAMETER 값을 반환합니다.
Windows CE: CodePage 매개변수의 CP_UTF7 및 CP_UTF8 값과 dwFlags 매개변수의 WC_NO_BEST_FIT_CHARS 값은 지원되지 않습니다.