问题现象:
今天在项目中需要根据数据库的某个中文值,检索对应表中的指定字段,从而获取该行记录的相关信息.,由于不确定该中文值是否不变,为了提高代码效率,我把该中文值通过配置文件定义获取:
而不是在代码中写死,然后用@Vaule注解去获取这个属性值:
结果调试代码的时候发现是乱码:
问题分析:
通过查阅相关资料发现 Sprigboot 底层逻辑中,使用@Vaule注解去获取配置文件的数据值时,是采用 ISO-8859-1编码 格式,因此无法顺利识别中文;
网上有些我不太建议的方法,例如:
1.可以通过添加springboot配置
2.设置 File Encodings的Transparent native-to-ascii conversion为true;
这里我介绍一种快准狠的方法,可以获取到中文值:
在需要使用到该中文值的时候,对该变量值进行编码格式转码,转化为UTF-8,即可识别中文了.
解决方法:
修改 mediumVoltageCircuitTableName 变量的编码格式为UTF-8:
String devSpecificationName = new String(mediumVoltageCircuitTableName.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
调试结果: