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

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

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

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

Q&A

解決済

3回答

2564閲覧

javaのBufferdReaderでテキストファイルを読むと特定の文字で文字化けします。

mitsugi

総合スコア8

Java

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

0グッド

0クリップ

投稿2017/03/02 05:51

###前提・実現したいこと
java初心者です。
javaでテキストファイルを読むと"比咩神社"の文字が"比?盗_社"に化けます。
解決方法はありますか。

###発生している問題
以下の関数でテキストファイル(SJIS)を読むと、戻り値のデータで"比咩神社"の文字が"比?盗_社"に化けます。
他にもあるかもしれませんが気づいたのはこの単語です。

###該当のソースコード

static String textRead(File file){
String CRLF = "\r\n";
String data = "";
String strs = "";
try{
BufferedReader br = new BufferedReader(
new InputStreamReader(
new FileInputStream(file), "SJIS")
);
while((strs = br.readLine()) != null){
data += strs + CRLF;
}
br.close();
}catch(FileNotFoundException e){
System.out.print(e);
}catch(IOException e){
System.out.print(e);
}
return data;
}
###試したこと
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

guest

回答3

0

ベストアンサー

以下で正常に読めます。

new FileInputStream(file), "MS932")

Microsoftコードページ932

投稿2017/03/02 05:56

Y.H.

総合スコア7914

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

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

mitsugi

2017/03/02 06:04

素早い回答ありがとうございました。 見事に解決しました。
guest

0

咩 の字は JIS X0213 で規定された第2面に属する(いわゆる第3、第4水準漢字)ものなので、対応する Shift_JIS-2004 でないと正常に処理できません。

SJIS は Shift_JIS-2004 非対応です。
MS932(Windows 日本語)は Windows Vista 以降で JIS2004 対応している文字集合なので、こちらを使うとうまくいく、のです。

投稿2017/03/02 06:12

tacsheaven

総合スコア13703

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

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

mitsugi

2017/03/02 06:15

回答ありがとうございました。 見事に解決しました。 この問題は一般的だったようですね。勉強になりました。
guest

0

「咩」という文字は、本来のシフトJISには入っておらず、「IBM拡張文字」あるいは「NEC選定IBM拡張文字」という機種依存文字なのです(JIS X 0213のシフトJIS、という可能性もありますが、そっちより可能性は高いと思います)。

エンコードを"MS932"とすれば、そういった拡張文字まで処理可能となります。

Qiita JavaでのシフトJISの扱い

投稿2017/03/02 06:02

maisumakun

総合スコア145183

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

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

mitsugi

2017/03/02 06:05

回答ありがとうございました。 理由まで説明いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問