有时,特殊的一些业务需求,我们会为了方便的情况下,使用中文作为key,正常情况下 ,取数据不会有问题,但是难免会有的时候由于编码格式不一样,而导致取不到数据,这个时候,就需要我们对存储的key做一个特殊的处理。这里我选择使用base64编码处理这种情况。
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> </dependency>
首先我们先引入jar包,然后我们先来看看测试代码
import java.io.UnsupportedEncodingException; import java.util.Base64; import java.util.UUID; public class BASE64Test { public static void main(String args[]) { try { // 使用基本编码 String base64encodedString = Base64.getEncoder().encodeToString("生活垃圾".getBytes("utf-8")); System.out.println("Base64 编码字符串 (基本) :" + base64encodedString); // 解码 byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString); System.out.println("原始字符串: " + new String(base64decodedBytes, "utf-8")); base64encodedString = Base64.getUrlEncoder().encodeToString("生活垃圾".getBytes("utf-8")); System.out.println("Base64 编码字符串 (URL) :" + base64encodedString); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < 10; ++i) { stringBuilder.append(UUID.randomUUID().toString()); } byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8"); String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes); System.out.println("Base64 编码字符串 (MIME) :" + mimeEncodedString); } catch (UnsupportedEncodingException e) { System.out.println("Error :" + e.getMessage()); } } }
测试输出结果,没毛病。放入实际业务中使用。当然,有的时候我们在解决问题的时候,还是要先看一下问题到底是怎么导致的,否则努力错了方向,终将颓然。
// 使用基本编码 String base64encodedPath = Base64.getEncoder().encodeToString(path.getBytes("utf-8"));
一行代码就解决编码问题。