4

この Windows wchar_t 文字列があるとします。

L"\x4f60\x597d"

L"\x00e4\x00a0\x597d"

UTF-32 AFAIKであるGCC / Linux wchar_t形式に変換したいと思います(必ずしもプログラムで行う必要はありません。これは1回限りのことです)。どうすればいいのですか?(一般的な説明はいいでしょうが、この具体的なケースに基づく例も役に立ちます)

文字変換サイトに誘導しないでください。「終了文字」形式ではなく、L"\x(何か)" 形式から変換したいと考えています。

4

4 に答える 4

2

UTF-16 (Visual C++wchar_t形式) から UTF-8 に変換し、次に UTF-8 から UCS-4 (GCCwchar_t形式) に変換することは、受け入れられる答えでしょうか?

その場合、Windows では、変換の最初の部分でWideCharToMultiByte関数 (パラメーターに with)CP_UTF8を使用できます。CodePage次に、結果の UTF-8 文字列をプログラムに直接貼り付けるか、さらに変換することができます。これは、ある人がどのようにそれを行ったかを示すメッセージです。独自のコードを記述したり、手動で行ったりすることもできます (UTF-8 を UCS-4 に変換する正確な方法に関するセクションを含む公式仕様は、ここで見つけることができます)。もっと簡単な方法があるかもしれませんが、私はまだ Linux での変換にあまり詳しくありません。

于 2008-10-25T15:28:19.320 に答える
2

\xD800 から \xDFFF までの文字についてのみ心配する必要があります。他のすべての文字は、ゼロで埋められた場合、UTF-16 から UCS-4 にまったく同じようにマップする必要があります。

于 2008-10-26T06:43:04.800 に答える
0

文字変換を行うために最もよく使用されるライブラリの 1 つは、ICU ライブラリhttp://icu-project.org/です。たとえば、いくつかのブーストhttp://www.boost.org/ライブラリで使用されます。

于 2008-12-08T23:10:18.697 に答える