문제

WCHAR_T와 UTF8 사이의 문자열을 변환하기위한 일부 기능을 테스트하는 동안 Visual C ++ Express 2008로 다음과 같은 이상한 결과를 충족했습니다.

std::wcout << L"élève" << std::endl;

"úlþve :"를 인쇄합니다. 이것은 분명히 예상되는 것이 아닙니다.

이것은 분명히 버그입니다. 어떻게 그렇게 될수 있니 ? 그러한 "기능"을 어떻게 처리해야합니까?

도움이 되었습니까?

해결책

이 시도:

std::wcout << L"\x00E9l\x00E8ve" << std::endl;

또한 콘솔도 유니 코드를 지원해야합니다.

업데이트:

콘솔이 유니 코드를 지원하지 않기 때문에 콘솔에서 원하는 출력을 생성하지 않습니다.

다른 팁

당신은 또한보고 싶을 수도 있습니다 이 질문. It shows how you can actually hard-code unicode characters into files using some compilers (I'm not sure what the options would be got MSVC).

이것은 분명히 버그입니다. 어떻게 그렇게 될수 있니?

다른 운영 체제는 레거시 캐릭터 인코딩으로 분배되고 UTF-8으로 전환되었지만 Windows는 사용합니다. 레거시 인코딩 : "OEM"코드 페이지 (명령 프롬프트에서 사용) 및 "ANSI"코드 페이지 (GUI에서 사용).

C ++ 소스 파일은 ANSI 코드 1252 (또는 1254, 1256 또는 1258)에 있지만 콘솔은 OEM 코드 850으로 해석됩니다.

IDE와 컴파일러는 ANSI 코드 페이지를 사용합니다. 콘솔은 OEM 코드 페이지를 사용합니다.

또한 변환 기능으로 무엇을하고 있는지도 중요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top