wchar_t를하고 * WSTR을 wchar_t를에 할당?변환 코드 포인트는 내가 중국어 문자</p> <p>가 어떻게이의 char * str을 코드 포인트를 변환 할 수 있습니다 STR에서 你好이 2 중국어 문자의 유니 코드 코드 포인트를 알고 있다면 C
char * str = "4F60 597D";
wchar_t * wstr;
내가 직접 할당 할 수 있고 문제가 해결되었다는 것을 알고 있습니다.
wchar_t * wstr = L"\u4F60\u597D";
그러나 제 문제는 그보다 복잡합니다. 제 상황에서는 그렇게 할 수 없습니다.
리터럴 코드 포인트에서 wchar_t * 로의 변환을 어떻게 수행합니까?
감사합니다.
charset이 MBCS로 설정된 MS Visual C를 사용하고 있는데 유니 코드 문자 세트를 사용할 수 없다고 가정합니다.
UPDATE는 : 죄송 단지 같이 wchar_t *의 WSTR에 같이 wchar_t WSTR 수정
UPDATE 숯 * STR 2 중국어 문자, UTF-8 코드 유닛들의 시퀀스를 포함你好
char * str = "\xE4\xBD\xA0\xE5\xA5\xBD";
size_t len = strlen(str) + 1;
wchar_t * wstr = new wchar_t[len];
size_t convertedSize = 0;
_locale_t local = _create_locale(LC_ALL , "Chinese");
_mbstowcs_s_l(&convertedSize, wstr, len, str, _TRUNCATE, local);
MessageBoxW(NULL, wstr , (LPCWSTR)L"Hello", MB_OK);
왜 MessageBox는 일본어 문자를 출력합니까? 중국어 대신에? 사용할 로케일 이름은 무엇입니까?
이 질문은 다소 혼란 스럽습니다. 지금 정확히 무엇을 가지고 있습니까? UNICODE 코드 포인트를 나타내는 16 진수 코드가 많은'char *'? 그리고 MBCS가 어떤 인코딩을해야합니까? – RedX
@WhozCraig : 예, 죄송합니다. 방금 문제를 해결했습니다. – William
@RedX : 네, 우주에서 분리 된 많은 유니 코드 코드 포인트를 가진 char *을 가지고 있습니다. wchar_t *로 변환해야합니다. "MBCS가되어야하는 인코딩이 무엇인지 이해하지 못해 죄송합니다." – William