Java怎么将url中的中文编码

示例参考:

import java.io.UnsupportedEncodingException;  
import java.net.URLEncoder;  
import java.util.HashMap;  
import java.util.Map;  
import java.util.regex.Matcher;  
import java.util.regex.Pattern;  
  
public class URLEncodeChineseInQueryString {  
	
    public static Map<String, String> parseQueryParameters(String queryString) {  
        Map<String, String> queryParams = new HashMap<>();  
        Pattern pattern = Pattern.compile("([^&=]+)=([^&]*)");  
        Matcher matcher = pattern.matcher(queryString);  
        while (matcher.find()) {  
            queryParams.put(matcher.group(1), matcher.group(2));  
        }  
        return queryParams;  
    }  
  
    // 这个方法用于对查询字符串中的中文进行编码  
    public static String encodeChineseInQueryString(String queryString) {  
        // 解析查询字符串为Map  
        Map<String, String> queryParams = parseQueryParameters(queryString);  
  
        // 对每个参数的值进行编码  
        for (Map.Entry<String, String> entry : queryParams.entrySet()) {  
            try {  
                String encodedValue = URLEncoder.encode(entry.getValue(), "UTF-8");  
                queryParams.put(entry.getKey(), encodedValue);  
            } catch (UnsupportedEncodingException e) {  
                e.printStackTrace();  
            }  
        }  
  
        // 重新构建查询字符串  
        StringBuilder encodedQueryString = new StringBuilder();  
        for (Map.Entry<String, String> entry : queryParams.entrySet()) {  
            if (encodedQueryString.length() > 0) {  
                encodedQueryString.append('&');  
            }  
            encodedQueryString.append(entry.getKey()).append('=').append(entry.getValue());  
        }  
  
        return encodedQueryString.toString();  
    }  
  
    public static void main(String[] args) {  
        String queryString = ".../download?fileName=测试中文.xlsx&url=/file/123456测试中文.xlsx";  
        String encodedQueryString = encodeChineseInQueryString(queryString);  
        System.out.println(encodedQueryString);  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值