2011-11-10 14 views
2

別のC++アプリケーションを呼び出したいJavaアプリケーションがあります。そのために は、私のJavaで私は私のargが "HelloWorldèçàœ" であるJavaからC++エンコーディングへのコマンドラインパラメータの受け渡し

Runtime.exec(args) 

を呼び出します。

私のC++はこの引数を受け取り、 "HelloWorld ????"と見なします。私はメモリマップを見て、文字は3f 3f 3f 3fと表示されます。

(さらに、これは関連しているとは確信していませんが、私のC++をコンパイルするときに、「Character Set = Use Multi-Byte Character Set」(「Properties-> General」)を選択しました。

Q:このようなパラメータをJavaからC++に渡すにはどうすればよいですか?

ありがとうございました

+0

シンプルなC++アプリケーション(Microsoft Visual C++ 2010でコンパイルされた)を呼び出し、この問題を再現できなかった単純なJavaアプリケーション(SunのJavaコンパイラを使用してWindowsでコンパイル)を作成しました。あなたが使用している正確なコードだけでなく、あなたの環境、コンパイラなどに関する情報を提供できるでしょうか?文字エンコーディングの問題は、非常に微妙な傾向があり、関連性がないと思われるものに依存します(たとえば、文字列 "HelloWorldèçàœ"をJavaソースファイルにリテラルとして入れた場合、Javaソースファイルのエンコーディングは犯人)。 – chess007

答えて

0

おそらく、両側で使用しているエンコードのためです。 "args"がJavaのUTF-8文字列として格納されていることを確認し、C++コードでUTF-8文字列を読み取ろうとしてください。

Othewise Javaではプラットフォームのデフォルトエンコーディングが使用されていますが、これらのエンコーディングは "èçàœ"文字をサポートしていない場合もあります。

関連する問題