- - PR -
文字化けについて
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-08-01 16:44
いつも一方的にお世話になっております。
さて質問ですが、掲題のとおり文字化けで悩んでおります。 UNIXからShift_JISのファイルを作成したいのですが、 全角のハイフン(−)が?に化けてしまいます。 原因が文字コードの扱いが違う為ということはなんとなくわかるのですが、 どのように対処してよいかわかりかねています。 どなたかお知恵を貸していただけたらと思います。 よろしくお願いします。 | ||||
|
投稿日時: 2003-08-01 23:18
で、現在はどうやってファイルを作成しているのですか?
該当部分のコードを提示されたほうが適切な返信が付くかと思います。 | ||||
|
投稿日時: 2003-08-01 23:59
ものすごくよくある質問ですよ。
文字化け Java 〜 あたりをキーワードに検索しましょう。 | ||||
|
投稿日時: 2003-08-04 19:53
レスありがとうございます。
現在は、 FileOutputStream out = new FileOutputStream("hoge"); byte[] buf = str.getBytes("Shift_JIS"); out.write(buf); このような処理をしているだけです。 検索してみたところ、このような問題がたくさん出ているのは わかるのですが、どのように対処していいのかよくわかりません。 参考となるサイトでも教えていただけると助かります | ||||
|
投稿日時: 2003-08-04 23:31
Byte stream, charactor streamをキーワードに調べれば幸せになるかもしれません。 また、先月号(2003年8月号)のJAVA WORLD誌の連載記事の中に入出力ストリームに関する話題がかかれているので、参考になるかもしれません。 | ||||
|
投稿日時: 2003-08-05 04:34
JDK1.4以降をお使いですか?
とりあえず以下のように変更することで ? に変わってしまうことは避けられるかと思いますが、そうやって作成されたファイルを Windows環境で見ると文字化けしている可能性が高いです。 byte[] buf = str.getBytes("SJIS"); しかしながら、EUCJP -> Unicode -> MS932 への変換ではどうしても ハイフンや波線は化けてしまうのではないかと思うので、.javaファイルのエンコーディング自体を変えるなどする必要があるかもしれません。(strをどうやって得ているのかによって変わってきます) | ||||
|
投稿日時: 2003-08-05 08:49
こんにちは。
FileOutputStream out = new FileOutputStream("hoge"); byte[] buf = str.getBytes("MS932"); out.write(buf); で文字化けは解消しませんか? それと、関連する話がFAQとしてまとまっているリンクを。 http://www.gimlay.org/~javafaq/S146.html [ メッセージ編集済み 編集者: BBC 編集日時 2003-08-05 08:53 ] | ||||
|
投稿日時: 2003-08-05 11:51
Shift_JISでの「〜」とWindows-31J(MS932)での「〜」は同じコードポイントに 割り当てられていますから、Windows環境で見たときに文字化けすることは無いです。 問題が起こるのはUnicodeとの相互変換のときのみです。 | ||||
