質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

1回答

865閲覧

javaでファイルから取得した文字列を出力すると文字化けする

donut4

総合スコア148

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

1クリップ

投稿2021/05/09 06:29

編集2021/05/10 03:58

java初心者です。よろしくお願いします。
テキストファイルから任意の文字列で検索してマッチする行を取得して出力するプログラムを作っていますが、
println()の出力時に文字化けしてしまいます。

お詳しい方よろしくお願いします。

  • OS

Windows10

  • Javaバージョン

JavaSE8

  • 参考サイト

https://hacknote.jp/archives/18584/
##コード

//コンパイル時のコマンドライン javac -encoding UTF-8 read.java // file/in/test.txtの中身 title: あいうえおあいうえおあいうえおあいうえお body: かきくけこかきくけこかきくけこかきくけこ //ここからjavaのコーディング import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class read {  public static void main(String[] args) { try{ File file = new File("file/in/test.txt"); FileReader fr = new FileReader(file); //ファイルを読み込む BufferedReader br = new BufferedReader(fr); //条件にあう行を画面出力する String line; int count = 0; while ((line = br.readLine()) != null) {  Pattern p = Pattern.compile("title");  Matcher m = p.matcher(line);  if (m.find()){   System.out.println(line);  } br.close(); fr.close(); }catch(FileNotFoundException e){ System.out.println(e); }catch(IOException e){ System.out.println(e); }   } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

  1. 環境は、Windows10
  2. (明記されていませんが)ファイル file/in/test.txt の文字コードは、UTF-8
  3. (明記されていませんが)実行したコマンドは、java read
  4. 環境がWindows10なので、デフォルトの文字エンコーディングは、MS932
  5. UTF-8のファイルを、MS932のつもりで読み込んで、そのまま出力しているので、文字化けしている。ようにみえている

というオチなのではないでしょうか。

java -Dfile.encoding=UTF-8 readとしてみたらどうなりますか?

投稿2021/05/10 06:31

shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

donut4

2021/05/11 10:58

文字化けせずに出力されました。 これって元々の原因ってどこにあるんでしょうか? 入力ファイルの文字コードが異なっているからなのでしょうか?
shiketa

2021/05/11 11:41 編集

> 文字化けせずに出力されました。 これは、`java -Dfile.encoding=UTF-8 read` としたら文字化けせずに出力された、ということですね。 > これって元々の原因ってどこにあるんでしょうか? 項番5に書いたとおりです。 Javadocは読みましたか? https://docs.oracle.com/javase/jp/8/docs/api/java/io/FileReader.html こうあります。 このクラスのコンストラクタは、デフォルトの文字エンコーディング...が適切に設定されていることを前提としています。 あなたが実行したとき、デフォルトの文字エンコーディングを適切に設定していなかったのではないですか。それが項番3で指摘したことです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問