我真是个悲剧,最近在用java的JNA写一个调用c++的dll,进行PE文件分析的程序!结果遇到一个大问题,找了2天都没有解决。
问题是这样的:
我在vc中导出的函数PEANALYZER_API char* GetFileName(void);
#ifdef PEANALYZER_EXPORTS
#define PEANALYZER_API __declspec(dllexport)
#else
#define PEANALYZER_API __declspec(dllimport)
#endif
PEANALYZER_API char* GetFileName(void);
函数中返回值的类型用的char*。
在java这边定义函数public String GetHeaderName(int HeaderIndex);
public String GetHeaderName(int HeaderIndex);
返回值类型用String来接收传来的char*。
英文当然没有问题,但当我使用中文的时候,悲剧就发生了,一堆乱码。我Goolge了两天,各种方法,各种编码转来转去都没有解决。什么byte-》char啊,什么char—》byte,都不行,我无语了!,最后无奈之下,我试了试将eclipse(JAVA开发我当然用这个好东西啦!)我原先设置的默认的编码“UTF-8”改成了“inherited from container gb18030”。
这个时候奇迹发生了,中文显示正常,我真是个大悲剧!