2011-11-10 49 views
2

我有一个Java应用程序,我希望在其中调用另一个C++应用程序。 对于这一点,在我的Java我叫将命令行参数从Java传递到C++编码

Runtime.exec(args) 

我的arg是 “HelloWorldèçàœ”。

当我的C++接受这个arg时,它将它视为“HelloWorld ????”。我查看了内存映射,字符èçàœ显示为3f 3f 3f 3f。 (另外,我不确定这是否相关,但是当我编译我的C++时,我选择了“字符集=使用多字节字符集”(属性 - >常规)选项。)

问:如何将Java的这种参数传递给C++?

谢谢

+0

我刚刚创建了一个调用简单的C++应用程序(使用Microsoft Visual C++ 2010编译)的简单Java应用程序(在Windows上使用Sun的Java编译器编译),但无法重现此问题。你能够提供你正在使用的确切代码,以及有关你的环境,编译器等的信息?字符编码问题往往是非常微妙的,并且取决于你永远不会认为相关的东西(例如,如果将字符串“HelloWorldèçàœ”作为Java源文件中的文字,则Java源文件的编码可以是罪魁祸首)。 – chess007

回答

0

这可能是因为你在双方使用的编码。尝试确保您的“参数”以Java中的UTF-8字符串形式存储,并且在您的C++代码中尝试读取为UTF-8字符串。

Othewise Java使用平台的默认编码,这可能甚至不支持这些“èçàœ”字符。