discuz-ucenter-api-for-java 中文乱码问题

贺佑运
2023-12-01

环境编码:

UC_SERVER服务器端(PHP):UTF-8

客户端JAVA:UTF-8

来自:風

1.discuz-ucenter-api-for-java DECODE 解密 中文乱码问题

问题描述:解密乱码或解密后为空问题,其实都是编码问题

解决方法:

ucenter/client/Client.java中 uc_authcode 代码

String $result = $result1.substring(0, $result1.length());
	在269行就上面的那一行处改为以下
	//String $result = $result1.substring(0, $result1.length());
	String $result= $result1.toString();
	try{
		$result=new String($result.getBytes("iso-8859-1"),"UTF-8");
	}catch (Exception e) {
		$result = $result1.substring(0, $result1.length());
		// TODO: handle exception
	}
解密即可正常

2.discuz-ucenter-api-for-java ENCODE 加密 问题

问题描述:得到的加密数据后在PHP中无法解密问题,和上面的一样都是编码问题

原因:英文字符和中文字符同时存在时会出现此问题,单独中文加解密没有此问题

解决方法:

在加密时对中文字符进行编码,以下案例,用户名为中文

String u="";
		try {
			u="uid=1&time=6541314313&email=adsfasdf@adsf.com&username="+java.net.URLEncoder.encode("测试","UTF-8");
		} catch (Exception e) {
		}
		System.out.println(u);
		String s= uc.uc_authcode(u, "ENCODE", $key);
		System.out.println(s);

 类似资料: