参数URL编码
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@Test
void test() throws IOException {
List postPara = new ArrayList();
postPara.add(new BasicNameValuePair("code", "001"));
postPara.add(new BasicNameValuePair("where", "[]"));
String data = EntityUtils.toString(new UrlEncodedFormEntity(postPara, HTTP.UTF_8));
}
<!--url编码依赖-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
参数escape编码
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
public String escape(String str) {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByExtension("js");
if (str==null||str.equals("")){
return "";
}
try {
Object eval = engine.eval("escape("+str+")");
return String.valueOf(eval);
}catch (Exception e){
return null;
}
}
base64 编码解码
import org.apache.commons.io.FileUtils;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.io.File;
import java.io.IOException;
import java.util.Base64;
前缀data:image/png;base64,
@Test
void test() throws IOException {
//编码 字节数组
byte[] bytes = FileUtils.readFileToByteArray(newFile("C:\\Users\\LZW\\Desktop\\123.jpg"));
String imageBase64 = Base64.getEncoder().encodeToString(bytes);
//解码 字符串
byte[] byteArray = Base64.getDecoder().decode("body");
FileOutputStream fos = new FileOutputStream("C:\\Users\\LZW\\Desktop\\new.jpg");
fos.write(byteArray);
fos.close();
}
<!-- org.apache.commons.io依赖-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
MD5编码
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.apache.commons.codec.binary.Hex;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
@Test
void test() throws IOException, NoSuchAlgorithmException {
方式一:使用org.apache.commons.codec.binary编解码
String mac = "abc123";
MessageDigest md = MessageDigest.getInstance("MD5");
byte b[] = md.digest(mac.getBytes("utf-8"));
String MAC = Hex.encodeHexString(b);
System.out.println(MAC);
方式二:自行编码
MessageDigest md2 = MessageDigest.getInstance("MD5");
byte bs[] = md2.digest(mac.getBytes());
StringBuffer sb = new StringBuffer();
for (byte b1 : bs) {
// 与运算
int number = b1 & 0xff;
String str = Integer.toHexString(number);
if (str.length() == 1) {
sb.append("0");
}
sb.append(str);
}
String MAC2 = sb.toString();
System.out.println(MAC2);
}
<!--编解码依赖-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
Integer.toHexString() 方法的参数是int(32位)类型,一个byte(8位)类型的数字,会把数字的高24位看作有效导致错误,使用& 0XFF操作,可以把高24位置0以避免这样错误的发生