私はマルチプラットフォームアプリケーションを作成しようとしています。 Windowsストアアプリケーション(winrt)側でファイルを開き、Windowsのwchar_t、UTF16であるPlatform :: String形式でそのパスを読み取ります。しかしUTF16(Windows wchar_t)をC++で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でのstd ::文字列にパスを変換しましたデバッガでは、英語以外の文字に壊れた文字が表示されます。私が知る限り、UTF-8は1文字に複数のバイトを使用できるので、英語以外の言語を完全にエンコードすることができます。変換の中に英語以外の文字を壊すものがありますか?
これはC++ではありません。どのような方言を使っていますか? –
あなたはそれが壊れていると思いますか?デバッガで表示されるものとして表示できますか? (好ましくは16進数で) – mvidelgauz
'私が知っている限り、UTF-8は英語以外の言語を完全にエンコードすることができます'はい。しかし、Visual Studioとそのデバッガ出力はUTF8を処理できない可能性があります。結局のところ、マイクロソフトの製品のほとんどは、UTF8のサポートがないか、あるいは制限されているだけです。 – deviantfan