- 締切済み
ECUのファイルを読むと、一部「?」表記になります。
EUCのファイルを読み、 String strEUC = EUCファイルから取得した文字列 String uniMoji = new String(strEUC.getBytes(),"EUC-JP"); と記述すると「uniMoji」に格納された文字列の一部だけ文字化けします。 具体的には 「八重洲中央口」が「八重洲中央?」、 「中央口」が「中央?」、 「東京駅」が「??駅」 と、表記され、 特定文字のみが?表記になってしまいます。 これを回避するにはどのようにすればよろしいでしょうか? 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- PED02744
- ベストアンサー率40% (157/390)
>やはりStringに一度入れてしまうと無理なんでしょうかねぇ。 いや、普通は私が示したロジックのように、読むときにちゃんとエンコードして読みますから、 Stringの中は通常のunicodeとして扱えるはずだと思います。 ANo.2さんがおっしゃっているように、「すでに正しくエンコードされているはず」 というのが普通の考え方ですが。 どのようにファイルから読み取られているかがポイントですね。 >私ではない他の方が管理している部分なので などとは言っていられないと思います。 複数人でプロジェクトを組んでいるのなら、システムが正しく動作しないのは一人の問題ではなく全員の問題ですから、あなた一人でなんとかしようとする必要は無いと思いますが。
- bgbg
- ベストアンサー率53% (94/175)
変換しなくても strEUCの中は正しくエンコードされた文字列が入っているのではないのですか?
- PED02744
- ベストアンサー率40% (157/390)
>String strEUC = EUCファイルから取得した文字列 この時点でStringに入れてしまっているのがおかしいのでは? そもそも、ファイルからのデータ取得なら、InputStreamReaderを使うとおもうのですが、 BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "EUC-JP")); String str; while((str = reader.readLine()) != null){ // 読み込んだ1行分のEUC-JPのデータに対する処理 } ※ごめん、うろ覚えで書いてますので、正しい構文はJAVA docで調べてみてください。
お礼
PED02744様 ご回答ありがとうございます。 やはりStringに一度入れてしまうと無理なんでしょうかねぇ。 EUCファイルからデータ取得する構文は、 私ではない他の方が管理している部分なので、 現状、取得する部分を触らずに どうにかしてデータ取得した後に何とか出来ないかなと思った次第であります。