• ベストアンサー
  • 困ってます

VC++.NET と UTF-8

C++ で書いたソースコードに UTF-8 エンコーディングで(日本語の)コメントをつけたのですが、そのコードを Visual Studio .NET でコンパイルするとコンパイルエラーになりました。 コメントを全部削除したらコンパイルできましたし、intel コンパイラ (windows/linux)、gcc (3.4.4 linux) ではコンパイルできたのですが、VC は UTF-8 が含まれているとコンパイルできない場合があるのでしょうか?あるいはソースが UTF-8 のときに有効なコンパイルフラグなどがあるのでしょうか?ちなみに IDE 上ではそれらのコメントは(文字化けなどなく)ちゃんと表示されてはいます。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数379
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

VC++.NETコンパイラは、UTF-8に完全対応していないようです。 UTF-8を使った場合、OSのロケールを「日本語」から「英語」にすることでコンパイルできるようです。 http://shade-lounge.e-frontier.co.jp/modules/newbb/viewtopic.php?viewmode=flat&order=DESC&topic_id=688&forum=2

共感・感謝の気持ちを伝えよう!

質問者からのお礼

解決法まで示していただいてありがとうございます。Visual Studio 2005 では解決されていることを祈りたいです。

関連するQ&A

  • C++11について

    C++11は、Windows,Linux,Macともに使えるものなのでしょうか? (1)結局、コンパイラが対応してるかしてないか? (2)C++11は、まだ完成していない? (3)gccのバージョンで使える、使えないが決まるの? (4)コンパイルする場合、どんなオプションをつける必要がある? (その他になにかしないといけないことがある?) といろいろわからないことだらけなので、C++11について詳しい方や、使用したことある方解答お願いします。 よろしくお願いします。

  • VisualStudioの文字コードについて

    現在、WindowsとLinux(Unix)でソケット通信を行い、文字のやり取りをするプログラムを作成しています。 ソースコードやコンパイルの環境は、 Windows側(Windows7):C言語(Windowsプログラミング)、VisualStudio2013でビルド&実行 Linux側:C++、g++(Cygwinを使用) です。 Windows側のソースコードがShift-JIS、Linux側がUTF-8であり、このままだと文字化けしてしまうため、Windows側のソースコードをUTF-8に変更(VisualStudioでソースコードを保存するときに「エンコード付きで保存」を使用)して再度ビルド、実行を行ったのですが、やはり文字化けしてしまいます。 ソースコードの文字コードを変更しただけでは不十分なのでしょうか? 原因があまりよく分からず困っています。 もし何か分かることがあれば教えていただきたいです、よろしくお願いします。 (もしかしたらカテゴリ違いかもしれません、申し訳ありません)

  • Visual Studio 2008につまれているコンパイラを知りたい

     今日は、Cの初心者です宜しくお願いします。  win xpでVisual Studio 2008を使っています。  でもこのアプリケーションにつまれているコンパイラを使ってコマンドプロンプトからも使って色々とプログラム作 成の勉強をしたいのですが、例えば、gccというコンパイラなら>gcc abc.cとかけば、実行ファイルが出来ますが、 Visual Studio 2008 ではなんというコンパイラがインストールされているか分かりません。  どこから探してやればコンパイラの名前が分かるのでしょうか。  色々とそれらしきフォルダを探してもコンパイラらしきものが見当たりません。  他のIDEではフォルダを探してすぐに分かったのですが、、、、  宜しくお願いします。

  • VC++のバグ?

    次のコードがコンパイルエラーとなってしまいます。 #include<vector> class foo:public std::vector<int>{ public: void clear(){ std::vector<int>::clear(); } }; VC6のSP2ではエラーになるんですが Linuxのgccでは全く問題なく動いたんです VC++のエラー?gccの拡張機能? .NETでは動くとか? どうなんでしょう? まあ、 using std::vector; や typedef std::vector<int> bar; とかすると回避可能なんですが…

  • windowsのコンパイラーで正しく実行されたのに、gccのコンパイラーでエラーがでた

    windowsのコンパイラーで正しく実行されたのに、gccのコンパイラーでエラーがでたソースコードです。ファィル名test.c です。Linux(Red Hat9) gccです。windowsのコンパイラーはCPad for Borland C++Compilerです。 #include <stdio.h> void main() //intからvoidに変更した { int i, j; for (i=1; i<=9; i++){ printf("%2d ",i); //%2dで、iが2桁に表示 } printf("\n"); printf("***************************\n"); //この罫線もどきの書き方はダサいので工夫してください for (i = 1; i<=9; i++){ for (j = 1; j<= 9; j++) { printf("%2d ", i*j); if (j == 9) printf("\n"); //1行表示後改行 } } return; //voidにしたので0を取った! } これがLinux(RedHat9)gccでは以下のエラーが出ます。 (test.c: 関数 `main' 内: test.c:4: 警告: `main' の戻り値の型が `int' ではありません)  なぜ、同じソースコードでエラーが起こるのですか?  Linux gccでは、この場合`int' 以外の何が必要なのでしょうか? 以上よろしくお願いします。

  • GPLについて

    gcc でコンパイルしたプログラムは gccのライブラリとリンクされることになると思いますが、このプログラムは配布する時に GPL にのっとって配布しなければならないのでしょうか? 一般的に linux で動く商用で配布されているプログラムなどのようなコンパイラでコンパイルされているのでしょうか?

  • gccのコンパイルの結果ファイルは他のlinux環境で動きますか?

    gccのコンパイルの結果ファイルは他のlinux環境で動きますか? ソースコードを他のlinux環境に入れて再コンパイルする必要はありますか?

  • 'hcw'がみつかりません

    OS は Vistaで Visual studio 2005のC++ので コンパイルしています。 最初に 'hcw'が見つかりません。 とメッセージが出ます。 これは、何を意味しているのでしょうか?  使っているソースコードは VC++6.0では正常にコンパイルできるものです。

  • 大学でC言語を勉強するように言われました。

    大学でC言語を勉強するように言われました。 コンパイラはlinuxのgccを使えと指示されたのですが、そもそもコンパイラが違うとどう変わってくるのでしょうか?windows7で使えるコンパイラで勉強してはいけないのでしょうか? コンパイラの違いが大したものでなければ家ではwindows7で使えるフリーのコンパイラを使いたいのですが。もし、違うコンパイラで良いのならお勧めのものをどなたか教えてください。 また、C言語で調べてみたところC++のことばかり出てきました。 C言語とC++はあまり違いが無い、と聞いた覚えがあるのですが、C言語のことがあまり載ってないから替わりにC++を勉強する、というのではいけないのでしょうか? いくつも質問すみません。どなたかお願いします。

  • JAVAでUTF-8N以外が使えない

    Linux(CentOS4.2)にJ2SE v 1.4.2_10 SDKをインストールし,パスを通してさっそくハローワールドを作りました. すると,システム標準の文字コード(UTF-8)で書いた時には日本語が含まれていても問題なくコンパイルされ,実行できるんですが, Shit-JISやEUC-JPで書くと変換ができないと怒られ,コンパイルができません. 同じような質問が見当たらないのでその部分で躓く事がおかしいと思うんですが,このようになる原因はどのような事が考えられるでしょうか. コードは以下の物で,「てすと」の部分を「test」にすれば問題は起こりません. public class hello { public static void main(String[] args) { System.out.println("てすと"); } } エラーは以下のような物です > 警告: この文字は、エンコーディング UTF8 にマップできません。 ご存知の方がいらっしゃいましたらどうか宜しくお願いできましたら幸いです. (疎いのでおかしな質問かもしれません……)

    • ベストアンサー
    • Java