spring中@Value读取.properties配置文件中文乱码问题

Spring框架在读取.properties配置文件时可能出现中文乱码,原因在于默认编码不为UTF-8。解决方案是在配置文件加载时指定file-encoding为UTF-8。在web.xml中设置后,Spring MVC控制器层的@Value注解能正常获取中文配置。测试结果显示,修改后中文显示正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


spring中读取.properties文件中文乱码原因是因为springmvc或spring配置文件加载配置文件时没有设定字符集编码问题导致的,其默认是会将.properties配置文件转码为unicode

其实在加载配置文件时,运用如下配置即可

<context:property-placeholder location="classpath:config/*.properties"  file-encoding="UTF-8"/>

首先在编写properties配置文件时注意设置workspace,javafile文件都设置为UTF-8,在

Window→Preferences→General→Content Types→Text

此处其实有一个父子容器调用的坑;

        即web.xml初始化时,此时应用中是加载了spring容器与springmvc容器,2个容器的;需要说明的是,spring是springmvc的父容器;在加载配置文件后,存在父子容器调用的关系,子容器可以代用父容器的bean及属性配置;而父不能调用子容器中的bean,所以当使用@Value注解使用在Controller层注意配置文件加载的容器位置,若在spring中加载则需要使用"曲线求国"的方法取调用;否则出现以下测试情况

${demo.text1}----${demo.text2}

而在springmvc中加载时能直接取到;

开始测试

#配置文件信息
demo.text1=中文测试
demo.text2=chinese test

spring或mvc加载properties文件配置为

<context:property-placeholder location="classpath:config/*.properties" />

web层Controller代码为

package com.demo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PropertiesValueController {

	@Value("${demo.text1}")
	public String text1;
	@Value("${demo.text2}")
	public String text2;

	@RequestMapping("/properties")
	public void propertiesDemo() {

		System.out.println(text1+"----"+text2);

	}
}

此时控制台输出中文为乱码

ä¸­ææµè¯----chinese test

修改xml中加载配置文件时设置file-encoding="UTF-8"即可,代码如下:

<context:property-placeholder location="classpath:config/*.properties"  file-encoding="UTF-8"/>

测试,控制台输出为正常显示:

中文测试----chinese test

完美解决




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值