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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

解決済

1回答

4655閲覧

BufferedReader.readLine() 一行目の先頭に「?」がつく

poyopi

総合スコア113

Java

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

1グッド

0クリップ

投稿2016/08/09 05:17

編集2016/08/09 05:54

テキストファイルから読み出した文字列を利用するプログラムを組んでいたのですが、よくわからない現象が起きたため、どなたか解説をお願いできますでしょうか。
コードは:

java

1public class Hoge { 2 3 private static final Logger logger = LoggerFactory.getLogger(Hoge.class); 4 5 public void hoge(String filePath) throws IOException{ 6 Path path = Paths.get(filePath); 7 path.toRealPath(); 8 9 try(BufferedReader bufferedReader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) { 10 while (true) { 11 String line = bufferedReader.readLine(); 12 if(line == null) break; 13 logger.debug(line); 14 } 15 } catch (IOException e) { 16 e.printStackTrace(); 17 } 18 } 19}

テキストファイルは:

hogehoge piyopiyo moyamoya

のような感じです。
これで出力されたログを見ると、

log

113:48:44.116 [main] DEBUG packagename.Hoge - ?hogehoge 213:48:44.116 [main] DEBUG packagename.Hoge - piyopiyo 313:48:44.117 [main] DEBUG packagename.Hoge - moyamoya

のように、なぜか一行目の先頭にだけ「?」がついてしまいます。
Javaのコードでログ出力する前にif(line.startsWith("\\?")) line.replace("\\?", "");など入れてみましたが特に効果が出ず(文法がおかしいでしょうか?)、仕方がないので、テキストファイルのほうで、最初の1行目のみ関係ない文字列をいれて:

aiueo hogehoge piyopiyo moyamoya

Javaの方でbreakするif文の後に続けてif(line.contains("aiueo")) continue;のようにして無視することで一応意図通りに動かすことはできましたが、このやり方では良くないと思っているので、根本的に何がいけないのかを知りたくて、質問させていただきます。


【追記】
メモ帳で保存したUTF-8の.txtでしたのでBOM付きとなってしまったようです。nkf --overwrite --oc=UTF-8 filename.txtとして読み直しましたら「?」は外れました。ご回答ありがとうございました。

A-pZ👍を押しています

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

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

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

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

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

A-pZ

2016/08/09 05:51

テキストファイルの保存形式もあわせて記載してください。(文字コード、BOMの有無、改行コード、保存したエディタ)
poyopi

2016/08/09 05:56

A-pZさん、入れ違いにてすみません。質問文に追記した通りですが、ご回答者さんのご指摘にて解決いたしました。
guest

回答1

0

ベストアンサー

BOMが付いているのかもしれないですね。
BOM無しのファイルで再度ためしてみてください。

投稿2016/08/09 05:39

yona

総合スコア18155

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

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

poyopi

2016/08/09 05:52

ご回答ありがとうございます。ご指摘どおり、BOMでした。メモリが貧弱でメモ帳を使いがちなのですが、意識を改めようと思います。自分の視点では見落としたままの箇所でしたので、ご回答いただけて大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問