java 使用registry-3.1.3读取注册表字符串中文的乱码问题? 真心求助!!!急求!!正确的,分全给! Java乱码注册表 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主的RegistryKey software = Registry.HKEY_LOCAL_MACHINE.openSubKey("SOFTWARE");是哪来的?我怎么找不到这2个东西。。第三方的库? 很明显是的java 使用registry-3.1.3读取注册表,还有一个dll的动态链接库 求助牛人,都说这是最牛的论坛,为什么简单的得不到解答,难得也得不到解答,难道会的人都over了吗?不禁使我对csdn产生怀疑 专门下了你说的这个东西试一下,这个包的实现对包含中文值的KEY应该有问题,我看这个好像有源代码,你直接看一下源代码改一下吧。应该不是使用的问题,可能C语言的实现就有问题。 只读不写的话,这里有答案http://bbs.csdn.net/topics/360158652 我知道哪里出了问题,说出来真是难以启齿,首先了解原理了就不难解决,这个dll在读取注册表是采取二进制,在一个循环里使用 int =xx.read()的方式,然后读取的int放入一个byte数组,然后直接使用这个byte[] 来new 一个string,这样就导致单纯的转变string的编码方式还是会出错,于是我们可以将这个String subKey2Value = subKey.getStringValue("Install_Dir");中的subKey2Value还原为char数组,然后放入一个byte数组里,然后使用gbk编码方式重新将这个byte数组构造成string就完美解决中文了乱码问题。 专门下了你说的这个东西试一下,这个包的实现对包含中文值的KEY应该有问题,我看这个好像有源代码,你直接看一下源代码改一下吧。应该不是使用的问题,可能C语言的实现就有问题。已经解决,将这个string重构了一下 我知道哪里出了问题,说出来真是难以启齿,首先了解原理了就不难解决,这个dll在读取注册表是采取二进制,在一个循环里使用 int =xx.read()的方式,然后读取的int放入一个byte数组,然后直接使用这个byte[] 来new 一个string,这样就导致单纯的转变string的编码方式还是会出错,于是我们可以将这个String subKey2Value = subKey.getStringValue("Install_Dir");中的subKey2Value还原为char数组,然后放入一个byte数组里,然后使用gbk编码方式重新将这个byte数组构造成string就完美解决中文了乱码问题。楼主把那几行代码贴出来?我当时也尝试直接了在JAVA代码里从byte[]恢复,但是好像拿到的byte[]已经是错误的,所以判断是在JNI调用返回的值就已经不正确了!subKey2Value还原为char数组,然后放入一个byte数组里 -- 这句话好像没太明白,怎么从一个char数组里恢复一个byte数组的??? 根据上面的提示编写的java代码,可以将String乱码改为有效String,另外我想请教一下registry在修改注册表时有是怎么做的?public static String encode(String str){ char []c=str.toCharArray(); byte []b=new byte[c.length]; for(int i=0;i<c.length;i++){ b[i]=(byte) c[i]; } String newStr=null; try { newStr=new String(b,"gbk"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } return newStr; } java中如何将字符型变量String转化成int型变量? 如何用replace把/换成//如:Str.replaceAll("\","\\") 一个关于JSplitPane的问题,在线等…………………………!!! 超菜鸟的java问题. jsp 怎么读写客户端文件! 问个与jstl和hibernate有关的问题 帮帮小弟 普通的字符串数组排序,有什么简单的办法? 关于IE的Applet小程序的显示 jsp如何引用flex main线程如何在其内部的所有执行完后在执行接下来的步骤 背景图片随窗口大小进行缩放的问题
.openSubKey("SOFTWARE");是哪来的?我怎么找不到这2个东西。。第三方的库?
专门下了你说的这个东西试一下,这个包的实现对包含中文值的KEY应该有问题,我看这个好像有源代码,你直接看一下源代码改一下吧。应该不是使用的问题,可能C语言的实现就有问题。
这里有答案http://bbs.csdn.net/topics/360158652
专门下了你说的这个东西试一下,这个包的实现对包含中文值的KEY应该有问题,我看这个好像有源代码,你直接看一下源代码改一下吧。应该不是使用的问题,可能C语言的实现就有问题。已经解决,将这个string重构了一下
char []c=str.toCharArray();
byte []b=new byte[c.length];
for(int i=0;i<c.length;i++){
b[i]=(byte) c[i];
}
String newStr=null;
try {
newStr=new String(b,"gbk");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
return newStr;
}