JAVA常用编解码

参数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以避免这样错误的发生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值