先说方法:
在实现的类里,利用静态代码块加上这句:System.setProperty("jna.encoding","GBK");
如我的JNA类是:
public interface Control extends Library{
Control INSTANCE = (Control) Native.loadLibrary("dll文件名",Control.class);
//接口方法
//略、、、
}
然后我的实现类里:
public class Helper {
static Control INSTANCE = null;
static {
INSTANCE = Control.INSTANCE;
System.setProperty("jna.encoding","GBK");
}
//方法略
}
编码参数也不一定是GBK,但是我的三方库是GBK编码所以这里是GBK,根据个人情况而定。
吐槽:
看了网上一堆修改文件编码格式的方法,是可行的,但是太繁琐了。。。我本身项目是UTF8编码的。本来这个DLL我已经用在了好几个项目里,因为这个问题我都给以前的项目编码是GBK的,然后无意中看到了这个方法,特此记录,神来之笔(就是我见识短浅不知道。。。。)。
但是目前还有就是不知道有没有64位JDK能调用32位DLL的方法,如果有路过的大神还希望赐教!
好了,告辞!