java项目部署到linux读取properties中文乱码
在idea中由于idea可以设置编码,所以读取正常。
然而部署到linux后由于linux默认编码为ISO-8859-1,所以读取后中文会乱码。
下面写一个工具类专门读取properties文件,我的properties文件在linux上是放到config目录下的。
@Slf4j
public class PropertiesUtil {
protected static ResourceBundle erpResponse;
protected static final String PROPERTIES_FILE = "config/application-config";
static {
try {
erpResponse = PropertyResourceBundle.getBundle(PROPERTIES_FILE);
} catch (Exception e) {
log.error(PROPERTIES_FILE + "配置文件加载失败。", e);
}
}
public static String get(String key) {
return erpResponse.getString(key);
}
public static String getDynamic(String key) {
String osName = System.getProperty("os.name").toLowerCase();
if (osName.contains("linux")) {
// Linux 系统使用 getChinese 方法
return getChinese(key);
} else {
// 其他系统(如 Windows)使用 get 方法
return get(key);
}
}
public static String getChinese(String key) {
String string = null;
try {
string = new String(erpResponse.getString(key).getBytes("ISO-8859-1"), "utf-8");
} catch (UnsupportedEncodingException e) {
log.error(e.getMessage());
}
return string;
}
}
protected static final String PROPERTIES_FILE = "config/application-config";只需要放properties相对jar包的相对路径,无需后缀就行