C++への入力ファイルの文字エンコーディング

投稿者: Anonymous

現在、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

となっております。

解決

ファイルのエンコーディングに何を使うかは、案件の要求定義で決めるものです。
サポートが弱いとかそういう話で決めるものではないとオイラは思うわけです。

2016年現在のトレンドと言うか常識から言うと、
要求定義:複数の国語が混在したデータを扱うことができて当たり前
となりそうですよね。となれば
– 文字セットとしては UNICODE を採用
– テキストファイルのエンコーディングは UTF-8
しかないでしょう。
オイラはテキストファイルに UTF-16 / UTF-32 を使っているのを見たことが無いです。

一昔前なら 日本語だけ使えりゃいい→ Shift-JIS (というか CP932) だったかもしれません。

どのようなエンコードがC++においては一般的に用いられているのでしょうか。

プログラム内部で、メモリ上で保持している文字コード(内部コード) と
プログラム外部、つまりはファイルやネットワーク電文に使う文字コード(外部コード) は
区別して考える必要があります。
Windows 系のプログラムは内部コードに UTF-16 を使っていることが多いようです。
Unix 系のプログラムは内部コードに UTF-32 を使っていることが多いようです。
入出力の際に UTF-8 から/へ 変換すればよいだけのことです。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *