2011-11-10 47 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使用平臺的默認編碼,這可能甚至不支持這些「èçàœ」字符。