文件IO后奇怪的乱码

时间:2011-09-14 14:53:33

标签: java io jna

我正在编写一个applet来包装可以在浏览器中使用的专有.dll。为实现这一目标,我正在使用JNA。 .dll连接到检查扫描仪外围设备,可以从设备存储器中提取图像。

我必须使用JNA在Java中进行Windows API调用以获取图像:

// DEVICE is the JNA Library interface

HANDLEByReference img = new HANDLEByReference();
File outfile = new File("my_image.bmp");

DEVICE.saveImage(img.getValue(), outfile.getName().getBytes());

当代码保存图像时,我得到一个名为:

的名称
C:\Users\user\workspace\JavaProject\bin\my_image.bmpó_¯=Pá

注意到最后的乱码

在String上调用getBytes()时,Java是否返回NULL终止的byte []数组?

1 个答案:

答案 0 :(得分:1)

不,String.getBytes() 只是以字符串的编码形式返回字节。

请注意,除非您指定编码,否则它还会使用平台默认编码,并且默认可能不是您想要的。

如果你想要一个末尾带有“0”字节的数组,你可以使用:

byte[] data = outfile.getName().getBytes(encoding);
byte[] padded = new byte[data.length + 1];
System.arraycopy(data, 0, padded, 0, data.length);