• ベストアンサー

JAVAによるテキストファイルの読込み

Javaでテキストファイルの読込みを行いたいのですが、 SJIS、EUC、UTFなど代表的な文字コードは問題なく読込み、 バイナリファイルを読込んだ場合、エラーと判定したいのですが なにか良い方法はありませんか? 例えば、ファイルの文字コードを取得したときに ファイルがバイナリファイルか否かを判定することは可能でしょうか。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 参考になりますか。 http://p.tl/S8DM (短縮URLです) バイナリデータには文字コードにはない00が入っていることを利用しているようです。

Kuroichi01
質問者

お礼

回答ありがとうございます。 文字数が少ない場合は、ものすごく使える処理だと思います!! 書き忘れましたが、自身のやりたい処理に書かれる文字数は500万文字を 超える場合があり、この全ての文字がバイナリデータでない、かつ、 処理を複数回繰り返すなどを考えると、全ての文字を確認する処理では 時間がかかりすぎるため、今回は別の方法で処理を行うことにしました。 せっかく回答いただけたのに申し訳ありません。 また何かありましたら、宜しくお願いいたします。

関連するQ&A

  • javaのファイル読み込み時の文字コードについて

    当方プログラム初心者です。 文字コードがSJIS以外(EUCなど)のテキストファイルをBufferdInputStreamで読み込み、readline()したものをprintlnすると、この時点でファイル内の文字が文字化けします。 環境はEclipseで、実行時はUTF-8でエンコードされるようになっています。 ファイルはサクラエディタで作成し、保存時に文字コードをEUCやSJISに設定しています(デフォルトではSJISで保存される)。 ファイル内の文字列は「ABCDE123アイウエオ」が入っている前提です。 BufferedReaderにInputStreamReaderをラップし引数に読み込みたい文字コードを指定してもダメ、文字コードの引数にJISAutoDetectを指定してもダメ、Eclipseの実行構成をテキストファイルと同じ文字コードにしてもダメでした。 取り急ぎで本当にすみません。皆様の知恵をお貸しください。。。

    • ベストアンサー
    • Java
  • jQueryでテキストファイルを読むには?

    jQueryでテキストファイルを読みたいです。 こちら(https://ghweb.info/post-2976.html)などを参考に色々試しましたが読めませんでした。 エラーは出ていません。 試したのは$.getと$.ajaxです。 テキストファイルは文字コードutf-8、bom無しです。 そもそもjQueryでテキストファイルは読めるのでしょうか?

  • MySQL5.1の文字化け

    多くの方が同様の質問をされていたのですが、一致する問題が見つけれなかったので、ご存じの方がおられたら教えて下さいm(_ _)m (環境)  PHP 5.2.8 ZendFramework 1.5.1 から Pdo Mysqlを使用  文字コード:SJIS  Mysql 5.1  文字コード:EUC-JP (質問内容) 携帯の絵文字データをSJISのバイナリでスクリプト中に埋め込むため、スクリプトの文字コードをSJISに統一したところ、文字化けが発生しました。 SET NAMES SJIS のSQLを発行することで表示は正しくできるようなったのですが、新たにレコードを追加しようとすると文字化けが発生します。 例)情報 → 情表 insertを行う前の文字コードをSJIS,SJIS-win,EUCと変えてみましたが、SJISもしくはSJIS-winの場合は上記の例のとおりとなり、EUCにすると完全な文字化けとなりました... おそらく登録時にMYSQLがSJIS→UTF8→EUCに変換される時に正しく変換されていないものと思われるのですが、どなたか対処方法をご存じないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • javaで作るwebアプリで扱う文字コード(日本語)について

    javaで作るwebアプリで扱う文字コード(日本語)について javaで作るごく普通のwebアプリで扱う文字コード(日本語)についての質問です。 プレゼンテーション層-ビジネスロジック層の2層アーキテクチャで、データベースは 無く、ビジネスロジック層で入力ファイルを処理して結果を画面に出すというアプリです。 javaのデフォルト文字コードはUTF-8等だそうですが、例えばクライアントが Linuxマシンの時は、入力テキストファイルは普通、EUC-JPと思います。 以下、2点質問です。 1.この時、EUC-JPのテキストからUTF-8への変換は、JVMが自動的にするのですか?   Yesだったら、クライアント側はプラットフォームの種類にかかわらず、   文字コードを意識する必要はないのでしょうか。   Noだったら、一般的にはどこがするのですか? 2.1の答えがどちらにしても、クライアントのOSのデフォルトのコードを   UTF-8に変更する必要は無いですよね?関連する他のアプリケーションやミドルウェア   がUTF-8で動作するのかの検証は必要ないですよね?   もし認識が違っておりましたら、教えて下さい。 サーブレットとか画面周りの知識が無いので、質問の仕方がおかしいところが ありましたら、申し訳ありません。

    • ベストアンサー
    • Java
  • javaでEUC-JP文字列→UTF-8への変換

    DB内にEUC-JPで保存されているデータを取得して、これをUTF-8文字列として扱いたいです。 phpでいうところの$string = mb_convert_encoding($string, "UTF-8", "EUC-JP"); をjavaで実現したいです。 どのように記述すれば変換できるのでしょうか? 検索しても、数十行もコードを書いて実現しているものばかりで、 シンプルな方法が見つかりません。 javaには難しい処理なのでしょうか…

  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP
  • PHPでテキストファイルかどうかを判定する方法

    基本的なことですが、PHPでテキストファイルかバイナリーファイかを判定する方法がわかりません。以下のperlコードをphpで書く方法を教えてください。 if( -T $filename ){ テキストファイルの処理 }else{ バイナリーファイルの処理 } マニュアル見ましたがよくわかりませんでした。よろしくお願いします。

    • 締切済み
    • PHP
  • Unicodeのテキストファイルを読みたい

    Unicode(UTF-8)で作成されたテキストファイルを読み、Shift-JISに変換しメモコントロールに表示したいと思っています。 以下のコードで実行したのですが、文字化けになり正常に表示できません。 開発環境はC++Builder2010です。 char sjis[300]; wchar_t buf[300]; size_t n; setlocale(LC_ALL,"japanese"); while(fgetws(buf,300,fp31) != NULL){ n = wcstombs(sjis,buf,300); Memo1->Lines->Add(sjis); } fgetws関数が問題なのか、wcstombs関数が問題なのか、不明なのです。 アドバイスよろしくお願いいたします。 ちなみに読込んだテキストファイルは、国税局のインボイス登録者データです。 https://www.invoice-kohyo.nta.go.jp/download/index.html

  • C#でテキスト読込時、文字コード誤りを防ぐには?

    Visual C# 2005です。 現状、入力パスのテキストを文字コードSJIS("shift_jis")として読み込んで処理を行う、 というツールがあるのですが、 オペミスで、入力パスに、文字コードEUC("euc-jp")のテキストが格納されていた場合、 現状は、処理の途中で、 「入力文字列の形式が正しくありません。」や 「オブジェクト参照がオブジェクトインスタンスに設定されていません」 等の例外となってしまいます。 これ(テキストがEUCであることを検知、又は、SJISでないことを検知) を事前(実行ボタン押下直後)に確認する方法はないでしょうか? 厳密にチェックする方法がなければ、可能性の示唆でもかまいません。 また、SJIS⇔EUCが逆の場合(EUCであるべきテキストがSJISであった場合)も知りたいです。 よろしくお願いします。 因みに、テキストを用意する人とツールを実行する人(素人)は別の人なので、 画面に「事前に文字コードを確認して下さい」と表示しても無意味とのことです。

  • もともとEUCだったテキストファイルを

    もともとEUCだったテキストファイルを 間違えてS-JISで保存しちゃったみたいなのです。 秀丸で文字コード変換しなおして開いても元にもどらなかったんです。 なにか直す方法知ってる方いませんか? よろしくお願いします!