spring boot 配置文件里的中文处理 (发送短信)

最近做项目,要把发送短信的相关参数,抽取到配置文件中,遇到了中文乱码的问题。试了网上的一些方法,没解决。最后在看配置文件时,无意间看到拉取的配置文件里,注释都变成了ASCII码。我突发其想,把中文的配置文件,全部转成ASCII码写在配置文件里,居然解决了问题!!其中的原由还没去深究。这里只做些展示。


这是配置文件里的中文及运行时打印的日志
这里写图片描述
这里写图片描述


这里也贴出发送短信的方法

public BaseEntity sendCode(String userTel) {
    String cacheCode = CaptchaUtils.generateCaptcha(6);
    cacheCaptcha(userTel, cacheCode);
    logger.info("进入页面前,收集电话时,发送短信{}", cacheCode);
    String params[] = new String[] { cacheCode };
    return sendSMS(userTel, params);
}



    @Value("${***.message.url}")
    private String messageUrl;

    @Value("${***.message.api.key}")
    private String messageKey;

    @Value("${***.message.content}")
    private String messageContent;

    @Value("${***.message.sign.name}")
    private String messageSignName;
private BaseEntity sendSMS(String toMobile, Object[] params) {
    try {
        HttpPost httpPost = new HttpPost(messageUrl);
        httpPost.addHeader(HttpHeaders.AUTHORIZATION,
                "Basic " + new String(Base64.encodeBase64(("api:" + messageKey).getBytes()), "utf-8"));
        List<NameValuePair> list = new ArrayList<>();
        list.add(new BasicNameValuePair("mobile", toMobile));
        String smsContent = String.format(messageContent, params) + " 【" + messageSignName + "】";
        logger.info("短信配置内容{}", smsContent);
        list.add(new BasicNameValuePair("message", smsContent));
        httpPost.setEntity(new UrlEncodedFormEntity(list, "UTF-8"));
        CloseableHttpClient client = HttpClients.createDefault();
        CloseableHttpResponse response = client.execute(httpPost);
        HttpEntity entity = response.getEntity();
        String body = EntityUtils.toString(entity, "UTF-8");
        response.close();
        JSONObject obj = JSONObject.parseObject(body);
        int errorCode = obj.getIntValue("error");
        if (errorCode != 0) {
            logger.info("短信发送失败");
            return new BaseEntity(HttpStatus.FAIL);
        }
        logger.info("短信发送成功");
        return new BaseEntity(HttpStatus.SUCCESS);
    } catch (Exception e) {
        e.printStackTrace();
        return new BaseEntity(HttpStatus.FAIL);
    }
}

    public static String generateCaptcha(int num) {
        String chars = "0123456789";
        char[] rands = new char[num];
        for (int i = 0; i < num; i++) {
            int rand = (int) (Math.random() * 10);
            rands[i] = chars.charAt(rand);
        }
        return String.valueOf(rands);
    }

猜你喜欢

转载自blog.csdn.net/every__day/article/details/80910590