解决前端js密码加密传输,java后台在Base64中解码中文出现乱码的问题

直接上code

1、首先在js页面引入jquery.base64.js文件,这个百度一搜就有了

2、java后台解码代码,用的是Jdk自带的类  sun.misc.BASE64Decoder。若MyEclipse没提示找不到这个类的话解决方案为 

右健项目名点击build path  ---> configure build path ----> 选择libraries 先删除JRESystem Library再增加回来,后重新编辑clean一下就能找到这个类了,如下图

解决前端js密码加密传输,java后台在Base64中解码中文出现乱码的问题_第1张图片

2.1 、java解码代码

    /**
     *   Base64解码
     * @param code
     * @return
     */
    public static String Base64Decoding(String code) {   
    	BASE64Decoder decoder = new BASE64Decoder();
    	 byte[] decoding;
		try {
			decoding = decoder.decodeBuffer(code);
			return new String(decoding,StandardCharsets.UTF_8);
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
    } 
	



3、 一开如我也是看网上的博客前台直接使用这种方式进行编码

解决前端js密码加密传输,java后台在Base64中解码中文出现乱码的问题_第2张图片


4、测式时直接将编码后的字符直接复制到后台去进行解码,可是解码结果为中文或中文标点符合的内容全是乱码,如下图

解决前端js密码加密传输,java后台在Base64中解码中文出现乱码的问题_第3张图片



5、于是我又在网络上查询解决方法,在经过一个小时后还没有找到解决方法时,突然间我想到,乱码无非就是编码格式不一致导致的吗,我的页面是使用utf-8是为了让它

告诉浏览器,要用utf-8解码,我现在用的是basc64编码,是不是也应该告诉base64我使用的编码格式然后后台再解码呢,一想到这里直接在js的base64构造方法里多加了一个参数,发现他没有报错,并且编码后的字符串也不一样了,变的更长了,我想也许是因为utf-8占用的字节更大,所以它变的更长了吧,如下图

解决前端js密码加密传输,java后台在Base64中解码中文出现乱码的问题_第4张图片


6、于是我立马将使用utf-8编码后的字符串复制到后台进行测式,发现解决一切正党,中文跟中文符号都能正常显示,如下图

解决前端js密码加密传输,java后台在Base64中解码中文出现乱码的问题_第5张图片


7、那么使用这种方式就能解决中文后台解码出现乱码的问题了


你可能感兴趣的:(java)