在java類中常見的讀取Properties文件方式,是使用Properties.load(inputStream);的方式但是常常出現中文亂碼問題,這就很尷尬了
public synchronized void load(InputStream inStream) throws IOException { load0(new LineReader(inStream)); }
看了很久才發現,還有一個重載的方法, 它的參數是Reader,如下:
public synchronized void load(Reader reader) throws IOException { load0(new LineReader(reader)); }
而Reader是可以指定字符集的編碼格式的,於是嘗試如下更改:
1 static{ 2 //初始化讀取配置文件中的分表信息 3 Resource resource = new ClassPathResource("splitTable.properties"); 4 Properties props = new Properties(); 5 try { 6 InputStream is = resource.getInputStream(); 7 try { 8 BufferedReader bf = new BufferedReader(new InputStreamReader(is, "UTF-8")); 9 props.load(bf); 10 } finally { 11 is.close(); 12 } 13 } catch (IOException e) { 14 e.printStackTrace(); 15 } 16 projectMap = new HashMap<String,String>((Map) props); 17 }
順利解決了問題。遇到無法解決的函數,查看其重載的方法用來替換,是個很重要的技巧啊,很可能柳暗花明又一村了