Cookie包含中文的异常

在做SSM项目的时候,碰到这个异常,后来发现是因为我给Cookie存放的值username包含了中文:(我看别人写的是把账号和密码连在一起放Cookie里面,可以节省一个,先不管了)

因为Cookie对中文是不支持的,所以要存储中文就需要进行编码了,用的是Base64 。这是一种啥编码呢?我查一查吧:

嗯,自己给自己总结一下吧。任何文件或是字符串都可以用二进制来表示,但是二进制以1个字节或多个字节来表示字符,可能会出现无法打印的字符或是中文。所以Base64编码就是找64个ASCCI的字符来使用,刚好匹配6bit能表示数的个数。就是把所有的文件和字符串二进制展开,6位为单位进行编码,如果不能刚好全部编码,补0(字节/x00),然后用=来表示补了多少个字节。

``` java

package test;

import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import java.net.URLEncoder;

public class Base64Test {

public static void main(String[] args) throws UnsupportedEncodingException {

String username = "傻锐";

String password = "9527";

//加密

String str1 = URLEncoder.encode(username, "utf-8");

String str2 = URLEncoder.encode(password, "utf-8");

System.out.println(str1);

System.out.println(str2);

//解密

String str3 = URLDecoder.decode(str1, "utf-8");

String str4 = URLDecoder.decode(str2, "utf-8");

System.out.println(str3);

System.out.println(str4);

}

}

你可能感兴趣的:(Cookie包含中文的异常)