为什么使用【Properties】读取含【中文】的【配置文件】会【乱码】

为什么使用【Properties】读取含【中文】的【配置文件】会【乱码】,第1张

为什么使用【Properties】读取含【中文】的【配置文件】会【乱码】

Properties读取配置乱码
      • 问题:
      • 一般使用【仅含英文】:
        • 定义工具类:
        • 读取配置:
      • 读取异常:
      • 读取中文使用:

问题:

在开发中,为了随时修改方便属性和加密一些账户密码,会把私密信息写到配置文件,然后从配置文件中读取,这个过程中一般会使用java中的new Properties()

一般使用【仅含英文】: 定义工具类:
package com.bigdata.Utils

import java.io.{BufferedReader, InputStreamReader}
import java.text.SimpleDateFormat
import java.util.{Date, Properties}

class PropertiesUtil(fileName:String) {

  var properties:Properties = null

  def getProp() ={
    if(properties==null){

      properties = new Properties()
      properties.load(this.getClass.getClassLoader.getResourceAsStream(fileName))

      properties
    }else{
      properties
    }
  }
}

读取配置:
private val ppUtil = new PropertiesUtil("bigdata.properties").getProp()

println(ppUtil.getProperty("data"))
读取异常:

在读取中文的时候,这个方法就可不用了,读取出来的信息大多是??,有时候因为文件编码的不同可能是其他西方国家的文字,反正看不懂就是了。这个时候就需要下面的步骤来实现读取中文了:

读取中文使用:

//下面我使用了UTF-8文件格式,这里如果你想要本地使用的话,也需要将配置文件的编码格式修改为UTF-8

我是使用sublime修改的:

package com.bigdata.Utils

import java.io.{BufferedReader, InputStreamReader}
import java.text.SimpleDateFormat
import java.util.{Date, Properties}

class PropertiesUtil(fileName:String) {

  var properties:Properties = null

  def getProp() ={
    if(properties==null){

      properties = new Properties()

      properties.load(new BufferedReader(new InputStreamReader(this.getClass.getClassLoader.getResourceAsStream(fileName),"UTF-8")))

      properties
    }else{
      properties
    }
  }
}

调用方式和上面写过的是一样的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5672010.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存