멀티 플랫폼 응용 프로그램을 만들려고합니다. Windows 저장소 응용 프로그램 (winrt) 쪽에서 파일을 열고 Windows에서 wchar_t, UTF16 인 Platform :: String 형식으로 경로를 읽습니다. 그러나C++에서 UTF16 (Windows wchar_t)을 UTF8로 변환. 영어 이외의 문자가 손상됨 (한국어)
Platform::String^ copyPath = copy->Path;
std::wstring source(copyPath->Data());
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t >, wchar_t > convert;
std::string u8CopyPath = convert.to_bytes(source);
, 나는에 u8CopyPath을 확인 : 내 코어 로직 이후
표준 C++ 데이터 유형을 사용하는 경우에만 독립적 인 플랫폼으로,이 코드를 통해 UTF8에 표준 : : 문자열로 경로를 변환 한 디버거에서 영어 이외의 문자에 대해 손상된 문자가 표시됩니다. 필자가 아는 한, UTF-8은 한 문자에 여러 바이트를 사용할 수 있기 때문에 비영어권을 완벽하게 인코딩 할 수 있습니다. 전환시 영어 이외의 문자가 손상되는 부분이 있습니까?
그건 C++가 아닙니다. 어떤 방언을 사용하고 있습니까? –
왜 그것이 손상된 것으로 생각합니까? 디버거에서 표시되는 것으로 표시 할 수 있습니까? (바람직하게는 16 진수) – mvidelgauz
'내가 아는 한 멀리 UTF-8은 영어 이외의 언어를 완벽하게 인코딩 할 수있다 '네. 그러나 Visual Studio와 디버거 출력은 UTF8을 처리 할 수 없습니다. 결국 대부분의 Microsoft 제품에는 UTF8 지원이 없거나 제한되어 있습니다. – deviantfan