很奇怪的问题,我在一个类文件里的某个方法里调用dll的方法乱码,但是我在同样的类文件里直接在main方法里调用dll的方法就显示正常。这个dll是控制显示器的。
如:public class TestServiceImpl{
public boolean service(){
// xxx 得到下面方法AddTextArea的参数,其中text是中文的,①调用了instance.AddTextArea方法后,显示器就会显示这个text的文字,此处调用会显示乱码
int reslut = instance.AddTextArea(jno, qno, left,top, width, height, fontColor, fontName,fontSize, fontBold, fontItalic, fontUnder,line, hAlign, vAlign, text, type, speed, delay);
// 省略
}
public static void main(String[] args){
// ②此处调用则显示正常
int reslut = instance.AddTextArea(jno, qno, left,top, width, height, fontColor, fontName,fontSize, fontBold, fontItalic, fontUnder,line, hAlign, vAlign, text, type, speed, delay);
}
}
①处是把整个项目在tomcat里跑起来,然后action会调用这个service的方法,显示乱码。
②处是直接在这个类的main方法里运行,中文显示正常。
如:public class TestServiceImpl{
public boolean service(){
// xxx 得到下面方法AddTextArea的参数,其中text是中文的,①调用了instance.AddTextArea方法后,显示器就会显示这个text的文字,此处调用会显示乱码
int reslut = instance.AddTextArea(jno, qno, left,top, width, height, fontColor, fontName,fontSize, fontBold, fontItalic, fontUnder,line, hAlign, vAlign, text, type, speed, delay);
// 省略
}
public static void main(String[] args){
// ②此处调用则显示正常
int reslut = instance.AddTextArea(jno, qno, left,top, width, height, fontColor, fontName,fontSize, fontBold, fontItalic, fontUnder,line, hAlign, vAlign, text, type, speed, delay);
}
}
①处是把整个项目在tomcat里跑起来,然后action会调用这个service的方法,显示乱码。
②处是直接在这个类的main方法里运行,中文显示正常。
解决方案 »
- 求助关于UIManager.setLookAndFeel的问题!!
- 有关Vector的问题
- 对象与堆
- 一个Object和一个STRING相加后变成另一个STRING。。此时如何得到这个Object?
- 访问一个网页,把网页显示在一个jframe中:如访问http://www.csdn.net,就可以在jframe中看到主页,与在浏览器中看到的效果一样。
- 调试jsp碰到的奇怪问题?
- 一个奇怪的变成问题,代码并不难,就是结果奇怪
- Timer 问题 在线=
- 关于checkstyle的一些问题
- 有Sock方面的高手吗?
- 程序中会出现java.lang.NullPointerException的错误
- javaFx和groovy都是脚本语言,他俩之间什么关系?
String dllPath = Thread.currentThread().getContextClassLoader().getResource("com/cemso/jna").toString() + "JoymindComm.dll";
JoymindCommDLLLib INSTANCE = (JoymindCommDLLLib) Native.loadLibrary((Platform.isWindows() ? dllPath : "c"), JoymindCommDLLLib.class); public int addTextArea(int jno, int qno, int left, int top, int width, int height, int fontColor, String fontName, int fontSize, int fontBold, int fontItalic, int fontUnder, int line,
int hAlign, int vAlign, String text, int type, int speed, int delay);
}
String newText = new String(text.getBytes("ISO-8859-1"), "GBK");
我在同一个类文件里调同样的一段代码,只不过一个是在main方法里调用。有一个现实正常,说明编码没问题。
难道是编译成.class编码变了?
我在传入这个dll方法的时候都是正常的,所有编码都GBK。
如果是WEB工程,不会有问题
如果是客户端,要求你的入口程序(Main方法)必须是GBK的
发送数据的那个类也必须是GBK的,中间经过调用的类就无所谓了