- PR -

文字コード変換について

1
投稿者投稿内容
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-01-08 18:18
こんにちわ。みーちくと申します。

文字コード変換についてご教授願います。
java1.4.1
postgresql7.2.1

javaでコンパイルする時に javac -encoding EUC-JPでコンパイルしております。
また、DBの文字コードもEUC-JPになっております。

DBで取得した品名をあるファイルに「追加書込み」をするプログラムを作成中です。
そのファイルがShift_JISで保存されているのですが、日本語がうまく書き込みできません。

OutputStreamWriter out = new OutputStreamWriter(
 new FileOutputStream("hogehoge"),"SJIS");

↑このように書いた場合、追加書込みが出来ません。


PrintWriterfout = new PrintWriter(new BufferedWriter
 (new FileWriter("hogehoge", true)));

↑このように書いた場合、追加書込みはできるのですが、Shift_JISで書き込めません。

どのように処理をすれば良いのか、ご教授願います。
宜しくお願い致します。

へげもん
ベテラン
会議室デビュー日: 2002/04/14
投稿数: 87
お住まい・勤務地: 埼玉県
投稿日時: 2003-01-08 18:41
Javaのcharset名は RFC 2278: IANA Charset Registration Procedures に準拠してます。
"SJIS"のかわりに"Shift_JIS"を使ってください。
asip
ベテラン
会議室デビュー日: 2001/12/27
投稿数: 77
投稿日時: 2003-01-08 21:38
JDK1.4.1(or JRE1.4.1)からShift_JIS=SJISとなっています。Shift_JISではなくWindows-31J(=MS932)を使いましょう。
ちなみに1.2から1.4まではShift_JIS=MS932です。
teto
ベテラン
会議室デビュー日: 2002/07/31
投稿数: 61
投稿日時: 2003-01-09 00:07
PrintWriter pw =
new PrintWriter(
new OutputStreamWriter(
new FileOutputStream(fileName, true),
"Windows-31J"
)
);

ではだめなんですか?
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-01-09 10:26
へげもんさん、asipさん、tetoさん

返信ありがとうございました。
下記のようなコードを書きテストしたところできました。

コード:
public class test {
  public static void main(String args[]) {
    PrintWriter fout = null;

    try {

      FileOutputStream fos = new FileOutputStream("write.txt", true);
      OutputStreamWriter osw = new OutputStreamWriter(fos , "SJIS");
      BufferedWriter bw = new BufferedWriter(osw);
      String msg = "テストデータです";
      bw.write(msg);
      bw.write(msg);

      bw.close();
      osw.close();
      fos.close();

    }catch(Exception e){
      System.out.println(e);
      System.exit(1);
    }
  }
}

1

スキルアップ/キャリアアップ(JOB@IT)