情報を失うことなく、C++ std::string
をUTF-8またはstd::wstring
に変換しようとしています(非ASCII文字を含む文字列とみなされます)。 http://forums.sun.com/thread.jspa?threadID=486770&forumID=31によるとstd :: string.c_str()はどのエンコードを使用しますか?
:
のstd ::文字列が非ASCII文字が含まれている場合は、UTF-8にエンコーディングから変換する関数を提供しなければならない[...]
std::string.c_str()
はどのようなエンコーディングを使用しますか?クロスプラットフォームの方法でUTF-8またはstd::wstring
に変換するにはどうすればよいですか?
本質的に私はstd :: stringをエンコードする前にそのエンコードを知らずに変換する方法はありませんか?私はstd :: stringを取るAPI関数を書いているので尋ねます。私はドキュメンテーションがどのフォーマットを渡すべきかをユーザーに指示する必要があると思います。 – Gili
@ギリ、右:未知のエンコーディングのバイトシーケンスをUTF-8(または他のもの;-)に確実に変換することはできません。呼び出し元にUTF-8データを提供するように依頼することをお勧めします。他のほとんどのエンコーディングでは、可能なすべてのUnicode文字列をエンコードできません。 @Naaffによると、ASCIIはUTF-8(とISO-8859- *や他の多くのエンコーディング)の特別なケースですので、そういう場合は心配はありません(この事実をユーザに思い出させる脚注は_them_心配;-)。 –
良い答え、ありがとう:) – Gili