陈昶聿
18 小时以前 ebf4b72af820750b3207b7bee6881252b79eed31
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
@@ -332,4 +332,49 @@
        return "调用失败";
    }
    /**
     * 对URL参数进行编码,处理中文乱码问题
     *
     * @param params 参数字符串,格式:name1=value1&name2=value2
     * @param charset 编码格式
     * @return 编码后的参数字符串
     */
    private static String encodeParams(String params, String charset) {
        if (StringUtils.isBlank(params)) {
            return params;
        }
        try {
            StringBuilder encodedParams = new StringBuilder();
            String[] pairs = params.split("&");
            for (int i = 0; i < pairs.length; i++) {
                String pair = pairs[i];
                if (StringUtils.isNotBlank(pair)) {
                    int idx = pair.indexOf("=");
                    if (idx > 0) {
                        String key = pair.substring(0, idx);
                        String value = pair.substring(idx + 1);
                        // 对key和value都进行URL编码
                        encodedParams.append(URLEncoder.encode(key, charset))
                                .append("=")
                                .append(URLEncoder.encode(value, charset));
                    } else {
                        // 没有等号,整个作为key
                        encodedParams.append(URLEncoder.encode(pair, charset));
                    }
                    if (i < pairs.length - 1) {
                        encodedParams.append("&");
                    }
                }
            }
            return encodedParams.toString();
        } catch (UnsupportedEncodingException e) {
            log.error("URL参数编码失败", e);
            return params;
        }
    }
}