質問: 現在、Python 3のpandasを使って日本語を含む行列(表)を作り、C++に読み込んで分析することを考えております。 Python 3ではデフォルトでutf-8が使われているようなのですが、今回はC++上で次の段階の処理を考えているため、どのようなエンコーディングでファイルを保存すべきか困っております。 いくつかサイトを見る限り、ユニコードでもutf-16やutf-32に比べてutf-8のサポートが弱いなどの記述があり、どのようなエンコーディングでファイルを保存すべきか悩んでおります。どのようなエンコードがC++においては一般的に用いられているのでしょうか。 私の環境は、 * Mac OS X (El Capitan) * Python 3.4.3 * clang c++11 となっております。
回答: > > Python 3ではデフォルトでutf-8が使われているようなのですが > > > これは本当でしょうか? 一般的に、内部では独自のエンコーディングを使用していて、ファイルなど外部入出力の際に扱いやすいエンコーディングに変換します。ファイルであればUTF-8がよくつかわれます。 よく似た話でネットワークではネットワークバイトオーダーが使われますが、プログラム内部ではネイティブなエンディアンで値を処理します。 C++においても同様で、ファイル入出力はUTF-8で行えばそれで済む話です。``ヘッダーには`std::codecvt`や`std::wstring_convert`などが用意されていますので、それらを使用して変換を行うことができます。