java使用BASE64编解码,处理汉字问题

BASE64编解码与hashcode()码比较,BASE64的优点:

1.BASE64的汉字编码,是可以解码可逆的;

2.BASE64的汉字编码,不需要要考虑会不会有不同汉字会有相同的编码问题;


用途:

1.用Redis内存数据库,存储大数据问题时,可以使用汉字的BASE64编解码作为key,提高查询速度,也会节约存储空间;

2.可用于替代Map用汉字的key;


使用BASE64编解码前,要先导入 sun.misc.BASE64Decoder.jar

代码如下:

import Decoder.BASE64Decoder;
import Decoder.BASE64Encoder;

public class BASE64Test {
	// 将 s 进行 BASE64 编码
	public static String getBASE64(String s) throws Exception {
		if (s == null)
			return null;
		return (new BASE64Encoder()).encode(s.getBytes("UTF-8"));
	}

	// 将 BASE64 编码的字符串 s 进行解码
	public static String getFromBASE64(String s) throws Exception {
		if (s == null)
			return null;
		BASE64Decoder decoder = new BASE64Decoder();
		try {
			byte[] b = decoder.decodeBuffer(s);
			return new String(b);
		} catch (Exception e) {
			return null;
		}
	}

	public static void main(String[] args) throws Exception {
		String str = "面子";
		BASE64Test.getBASE64(str);
		System.out.println(BASE64Test.getBASE64(str));
		System.out.println(BASE64Test.getFromBASE64(BASE64Test.getBASE64(str)));

		String str2 = "面子,新闻,河北,珠子";
		BASE64Test.getBASE64(str2);
		System.out.println(BASE64Test.getBASE64(str2));
		System.out.println(BASE64Test.getFromBASE64(BASE64Test.getBASE64(str2)));
	}
}

结果:

6Z2i5a2Q

面子

6Z2i5a2QLOaWsOmXuyzmsrPljJcs54+g5a2Q

面子,新闻,河北,珠子


如有不恰当之处,请指教

你可能感兴趣的:(base64,汉字,key)