解决:SpringBoot使用@Value读取application.properties中文乱码

使用@Value读取application.properties

代码演示:
在appliaction.properties中写入需要的配置信息

server.servlet.context-path=/myboot
server.port=8085
name=小芳

创建一个@Controller

@Controller
public class HelloController {

    @Value("${name}")
    private String name;

    @RequestMapping(value = "/doSome",produces = {"application/json;charset=UTF-8"})
    @ResponseBody
    public String doSome(){
        return name;
    }
}

网页输出结果:出现中文乱码
在这里插入图片描述
可以看到@RequestMapping(value = “/doSome”,produces = {“application/json;charset=UTF-8”})是设置了UTF-8证明不是输出的时候乱码了,而是读取的时候乱码,查阅了一下资料发现@Value读取properties文件的时候不是用UFT-8读取所以就需要去配置一下Springboot,然后找到三个方法

1.在properties文件中加入这几行信息

spring.banner.charset=UTF-8
spring.messages.encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.force=true
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

然后设置 File Encodings的Transparent native-to-ascii conversion为true
在这里插入图片描述
此时重启springboot可以显示中文
在这里插入图片描述

2.加入注解

在Controller类的这个位置加上
@PropertySource(value = “classpath:application.properties”,encoding = “UTF-8”)
在这里插入图片描述

3.使用.yml就不需要配置这些啦

server:
  servlet:
    context-path: /myboot
  port: 8085
name: "酷酷"

在这里插入图片描述
希望对大家有帮助

<think>嗯,用户问的是在Spring Boot的application.properties文件中遇到中文乱码的问题,该怎么正确配置编码。首先,我需要回忆一下Spring Boot处理properties文件的默认编码方式。记得Spring Boot默认使用ISO-8859-1来读取properties文件,这可能导致中文字符显示乱码。用户可能已经直接在文件里写了中文,但没意识到编码问题。 接下来,我得考虑解决方案。可能的解决步骤有几个:第一,确保文件本身的编码是UTF-8,比如用IDE设置保存为UTF-8。第二,在配置中使用Unicode转义,比如\u形式,但这样不太方便。第三,改用YAML格式,因为YAML默认支持UTF-8。第四,自定义配置类,强制使用UTF-8读取properties文件。 用户可能对如何具体操作不太清楚,比如怎么改IDE的编码设置,或者如何编写自定义的配置类。需要分步骤说明,并且给出示例代码。同时,可能需要提醒用户不同版本的Spring Boot是否有差异,或者是否有其他依赖需要注意。 另外,用户的问题可能涉及到不同的开发环境,比如IntelliJ IDEA或Eclipse,设置文件编码的方式可能不同,需要通用一点的指导。还有,如果在配置中使用中文,可能需要在代码中获取这些属性时也确保编码正确,不过这可能已经由Spring处理了,只要读取时正确解码。 需要验证这些方法的有效性,比如测试修改后的配置是否真的正确显示中文。可能需要用户检查应用启动后的日志输出,或者实际使用这些配置的地方是否正常。 最后,生成的相关问题要围绕这个主题,比如乱码原因、YAML配置、验证方法、IDE设置影响等,帮助用户全面理解问题。</think>### 解决Spring Boot application.properties中文乱码问题 #### 1. 修改文件编码格式 - **步骤**:将`application.properties`文件保存为UTF-8编码格式 - **IDE操作示例**(以IntelliJ为例): 1. 右键文件 → File Encoding → 选择UTF-8 2. 勾选"Transparent native-to-ascii conversion" 3. 重启IDE使配置生效 #### 2. 使用Unicode转义字符 对于已存在的中文字符,可通过工具转换为Unicode转义序列: ```properties # 示例:中文值转换为\u格式 spring.datasource.username=\u7528\u6237\u540d ``` #### 3. 改用YAML配置文件(推荐) YAML格式默认支持UTF-8编码: 1. 创建`application.yml`文件 2. 迁移原有配置: ```yaml server: port: 8080 servlet: encoding: charset: UTF-8 force: true ``` #### 4. 自定义PropertySource配置 在启动类添加编码配置: ```java @SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .properties("spring.config.location=classpath:/application.properties") .properties("spring.config.encoding=UTF-8") .run(args); } } ``` #### 验证配置有效性 ```java @Value("${custom.chinese.value}") private String chineseValue; @PostConstruct public void checkEncoding() { System.out.println("中文值验证:" + chineseValue); } ``` ### 常见问题排查 1. **文件编码不一致**:确认IDE/文本编辑器与文件实际编码一致 2. **未清理编译缓存**:执行`mvn clean`或删除`target/`目录 3. **HTTP响应编码未配置**: ```properties spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true ``` ### 扩展建议 - 使用`@ConfigurationProperties`注解绑定配置类时,确保字段编码一致性 - 在Docker部署时,添加环境变量`-Dfile.encoding=UTF-8`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leach爱喝星冰乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值