java程序与jsp执行中的编码问题

java程序与jsp执行中的编码问题
Test.java
public static void mian(String[] args){
String str = new String(Base64.encodeBase64("测试".getBytes()));
System.out.println(str);
System.out.println(new String(Base64.decodeBase64(str.getBytes())));
}

test.jsp

<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%
String str = new String(Base64.encodeBase64("测试".getBytes()));
System.out.println(str);
System.out.println(new String(Base64.decodeBase64(str.getBytes())));
%>
发现一个问题:
Test.java执行结果:
5rWL6K+V
测试
test.jsp执行结果:
suLK1A==
测试
不知你发现没有,加密后生成的字符串一个是5rWL6K+V,一个是suLK1A==,但是都能解密正常

想知道加密后的字符串不一样,为什么又能解密正常的原因
String s = new String(Base64.encodeBase64("测试".getBytes("UTF-8")),"UTF-8");
System.out.println(s);
System.out.println(new String(Base64.decodeBase64(s.getBytes("UTF-8")),"UTF-8"));

问题已解决 改成上面的即可
因为编码告卜贺弊氏不一样,test.java在中文操作系统上调用getBytes()默认是使用gbk的,而你的jsp页面指定了编码是utf-8,所袜派以getbytes()使用的是utf-8,所以编码出来的字符串也不一样
getBytes("UTF-8") 统一编码
getbytes就行啦
← 上一篇: 下一篇: →