- - PR -
Unicode形式のファイルの読み込み方法。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-06-01 18:16
OS Linuxで
EUC-JP形式でテキストファイルを作成しました。 それを native2asciiで変換し Unicodeにしました。 それをプログラムで読み込み処理したいのですが 読み込み、表示すると文字化けてしまいます。 読み込んだ文字列を charAtとかで 比較したいのですが うまくいきません。 どのように ファイルを読み込めばいいのでしょうか? FileInputStream abc = new FileInputStream("/home/test/unicode.txt"); InputStreamReader in = new InputStreamReader(abc,"UTF-8"); BufferedReader br = new BufferedReader(in); String msg = br.readLine(); // 表示 System.out.println(msg); | ||||
|
投稿日時: 2004-06-01 19:11
UTF-8ではなく、ISO8859-1で読み込めば、いけそうな気がします。
ちなみに、native2asciiはUnicodeコード(\u9999みたいな)に変換して出力するツールで、utf-8には変換しません。 | ||||
|
投稿日時: 2004-06-01 19:17
すいません やはり(x_x)でした。
内部的に Unicodeだから System.out.println()で見ようとしても みれないということなのでしょうか? | ||||
|
投稿日時: 2004-06-01 19:39
同じように プロパティ形式のテキストファイル(XX=BBB)は
読み込む際に プロパティオブジェクトを用いて 読み込むので ストリームから ロードされる際に ISO8859_1でエンコーディングされます。 それ以外のテキストファイルは Unicodeにしないで 読み込むInputStreamReaderで Unicodeで読み込めばいいのでしょうか? プロパティ形式以外の Unicodeのテキストファイルを読み込む方法が あるのでしょうか? 初歩的なことなのかもしれませんがアドバイスお願いします。 | ||||
|
投稿日時: 2004-06-01 19:48
たぶん勘違いされていると思うのですが、native2asciiの出力結果は、元のEUC-JPをUTF-8(や、なんらかのUnicode系のエンコーディング)に変換したものではありません。 プラットフォーム依存のネイティブエンコーティング(SJISだのEUC-JPだの)で記述されているテキストファイルを、1文字ずつ「ユニコードエスケープ」した結果のASCII文字列です。 およそどんなエンコーディングでもASCIIとは互換性があるので、UTF-8を指定しようとISO-8859-1を指定しようと、ファイルを読み込むこと自体はできますし、文字化けもしていないでしょう。 「\u4f50\u3005\u6728」のような文字列のことを指して、「文字化け」といっておられるのだと思いますが、これは文字化けではありません。 そして、おそらくキラヤマトさんは、「\u4f50\u3005\u6728」のようなユニコードエスケープ文字列ではなく、「佐々木」のような意味のわかる文字列が得られることを期待されているのですよね? だとすると、「ユニコードエスケープ文字列をString(あるいはchar)に変換する簡単なAPI」は残念ながらないみたいです。がりがりと泥臭くコーディングするほかありません。(Commonsあたりにあったりするのかな?) | ||||
|
投稿日時: 2004-06-01 19:59
そうなんですか?
では プロパティクラスで読み込んだ結果は System.out.println()できれいに 表示されるのは なぜなんでしょうか? 泥臭く コーディングというのは Stringクラスとかで エンコードするということなのでしょうか? | ||||
|
投稿日時: 2004-06-01 20:28
>では プロパティクラスで読み込んだ結果は
>System.out.println()できれいに 表示されるのは >なぜなんでしょうか? Properties クラスをご覧になってはいかがでしょうか。 | ||||
|
投稿日時: 2004-06-02 09:45
SunのSDKだと java.util.Properties#loadConvert(String)あたりかな。 ユニコードエスケープの復元処理がゴリゴリゴリと書いてあります。 [ メッセージ編集済み 編集者: 佐々木 編集日時 2004-06-02 09:48 ] | ||||
1
