成功解决JNA中,C++的char* 到 JAVA的String传值时的中文乱码

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/iteye_15193/article/details/81923880

     我真是个悲剧,最近在用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”。

这个时候奇迹发生了,中文显示正常,我真是个大悲剧!

展开阅读全文

没有更多推荐了,返回首页