[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] java.util.Properties.load()でShiftJISを読みたい




始めまして、最近Javaの勉強を始めた者です.

 現在開発中のソフトで、テキストファイルから設定を読込みたい
と思っていますが、java.util.Properties#load(InputStream) では
ShiftJISで書かれたファイルを読み込むと文字バケしてしまいます.
 対策 1) native2ascii.exe で変換する
 対策 2) InputStream を extends したクラスを自作する
 以外になにか良いやり方はないでしょうか?

開発環境
  OS/2 Warp4 (+FX000505)
  JDK 1.1.7
動作確認
  OS/2 Warp4 (+FX000505)
  JDK 1.1.7 & JDK 1.1.6

以下、ソースと実行結果です.
---- PropertyTest.java ----
import	java.io.*;
import	java.util.Properties;

class PropertyTest {
	public static void main(String args[]){
		Properties	prop = new Properties();
		try {
			FileInputStream	in = new FileInputStream(args[0]);
			prop.load(in);
			in.close();
			prop.list(System.out);
		}catch(IOException e){
			return;
		}
	}
}
---- 設定ファイル(Unicode) properties.uc ----
place=\u718a\u672c
periods=\u660e\u6cbb,M,1868/01/01 \u5927\u6b63,T,1912/07/30
\u662d\u548c,S,1926/12/25 \u5e73\u6210,H,1989/01/08
---- 設定ファイル(ShiftJIS) properties.jis ----
place=熊本
periods=明治,M,1868/01/01 大正,T,1912/07/30 昭和,S,1926/12/25 平成
,H,1989/01/08

---- 実行結果 ----
[G:]java PropertyTest properties.jis
-- listing properties --
periods=????,M,1868/01/01 ????,T,1912/07/30 ?...
place=?F?{

[G:]java PropertyTest properties.uc
-- listing properties --
periods=明治,M,1868/01/01 大正,T,1912/07/30 昭和,S,...
place=熊本


以上、よろしくお願いします.

竹内 剛 (gori@xxxxxxxxxx)