ソースの文字コード
ソースの文字コードに痛く悩まされたので覚え書き。
2バイト文字が含まれているソースコードを各コンパイラで試してみました。
とりあえず、コンパイルオプションとかなしの状態で。
☆ソース
#include <iostream> int main(){ std::cout << "へろーわーるど" << std::endl; return 0; }
☆コンパイル結果
[utf-8]
BOM | あり | なし |
---|---|---|
msvc | ○ | △ |
gcc | △ | △ |
clang | × | △ |
[utf-16]
BOM | あり | なし |
---|---|---|
msvc | ○ | ○ |
gcc | × | × |
clang | × | × |
[sjis]
msvc | ○ |
---|---|
gcc | ○ |
clang | ○ |
☆回避方法
☆まとめ
ざっくりと試してみただけなのでもしかしたら間違いがあるかも知れません。
ロケールの設定とかは特に設定していないので、出力時の文字化けはそれが原因??
あと msvc で BOM がない utf-8 を扱うと警告が出てくるので注意しましょう。
それが原因でわけの分からないコンパイルエラーが出たり出なかったり。
もう頭がスタックオーバーフローしそうなので utf-8 で統一して、日本語出力は置いておこう。
どうせ、実験用コードぐらいにしか使用しないしね>日本語
とりあえず、gcc には -fexec-charset=CP932 でなんとか……。
まぁまたあとで問題が出てきそうだけど……。
あと github が、utf-8 以外だと文字化けするっていうのもでかいです。
他の C++er な方々はどの文字コードを使っているんだろうか。
[参照]
http://nakamura.goga.co.jp/article/124270631.html
http://d.hatena.ne.jp/ka-nacht/20080220/1203433500
http://msdn.microsoft.com/ja-jp/library/xwy0e8f2.aspx
http://www-online.kek.jp/~keibun/pukiwiki/index.php?MinGW%A4%CB%A4%C4%A4%A4%A4%C6