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

投稿日:

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

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/04/03 21:33:13時点 Amazon調べ-詳細)

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

【最新機種】GoPro hero11 Black

created by Rinker
GoPro(ゴープロ)
¥62,000 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット

created by Rinker
THE NORTH FACE(ザノースフェイス)
¥33,430 (2024/04/03 21:42:09時点 Amazon調べ-詳細)

防水暴風で耐久性抜群なので旅行で大活躍です!

モンスターエナジー 355ml×24本 [エナジードリンク]

created by Rinker
モンスター
¥4,748 (2024/04/03 21:33:15時点 Amazon調べ-詳細)

脳を活性化させるにはこれ!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥14,935 (2024/04/03 21:42:10時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

created by Rinker
MOFT
¥2,880 (2024/04/03 21:42:18時点 Amazon調べ-詳細)

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

サンディスク microSD 128GB

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

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ファイルの文字化けにお悩みの方は是非試してみてください♪

CATEGORIES & TAGS

IT