素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

投稿日:

【Java】エクセルでCSVを開いた際に日本語が文字化けする原因と解決方法【BOM付きUTF-8】

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2023/11/14 16:20:01時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

Anker PowerCor

created by Rinker
Anker
¥4,990 (2023/11/14 16:17:47時点 Amazon調べ-詳細)

旅行には必須の大容量モバイルバッテリー!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2023/11/14 16:17:47時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,300 (2023/11/14 16:12:17時点 Amazon調べ-詳細)

翼を授けよう!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,165 (2023/11/14 16:20:04時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥4,900 (2023/11/14 16:20:08時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

サンディスク microSD 128GB

スマホからSwitchまで使える大容量MicroSDカード!

スポンサーリンク

336×280




CSVの日本語がエクセルで文字化けする!

日本語が見れない

JavaBufferedWriterクラス等を用いてCSVファイルを生成する際、日本語が混じっているとソースコード上でUTF-8の指定をしていたとしてもエクセルで開くと文字化けしてしまうことがあります。

ちなみにMacのプレビューなどでは正常に表示されます。

原因はBOMが無いから

結論から言うと、原因としてはCSVファイルにBOMの指定が無いからです!

BOMとは、Byte Order Markの略となっていて、Microsoft ExcelはこのBOMがあるファイルのみUTF-8として解釈し、それ以外はデフォルトでSJISとして読み取ってしまうため、文字化けしてしまうようです。

それでは原因が分かったところで実際にソースコードに手を加えて解決していきましょう!

手順

FileOutputStreamにBOMを付与

対応方法はとても簡単で、以下のようにFileOutputStreamを一旦変数に代入し、行を記入する前にBOMの指定をするだけでOKです♪

確認

それでは出力したCSVファイルをエクセルで開いてみましょう!

無事に文字化けしなくなりましたね♪

終わりに

以上のように業務システムを作る際にはCSV出力機能を実装する事は多いと思いますが、知っていないと意外とハマるポイントです。

CSVファイルの文字化けにお悩みの方は是非試してみてください♪

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , ,

blogenist

Author: blogenist

関連記事

YouTubeも見てね♪

お名前.comサイドバー