自称第1種兼業ミュージシャン?えむによるブログ 

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
    --:-- | Top

UTF-8で文字化け回避してCSV出力する方法

UTF-8で文字化け回避してCSV出力する方法です。
なかなか情報が出ていないのでメモしておきます。

【現象】
UTF-8でCSV出力すると、エクセルがUTF-8をサポートしていないため
エクセルでWクリックして開いたときに文字化けしてしまいます

【試行錯誤】
CSV出力時にshift-jisとかに変換するという回避もありましたが
shift-jisだと出ない漢字などが発生してしまいます

【最終回避方法】
①CSVファイルの冒頭のバイナリデータにUFT-8のBOMであるef bb bfを追記してCSVを吐く

②WクリックでCSVファイルを開くのではなく、エクセルの「開く」
メニューからファイルを開く

③ファイルを開くときにダイアログが出てきてutf-8指定、カンマ区切りの指定ができるので開けるようになる

ちなみにJAVAでバイナリの追記をする方法は下記。
-------------------------------------------------------
//バイト型にセット
byte[] test = new byte[]{(byte)0xef, (byte)0xbb, (byte)0xbf};

ServletOutputStream outs = response.getOutputStream();

//書き出し
outs.write(test);
-------------------------------------------------------

[注意]
JSP標準out出力はWriterクラスであり文字しか扱えない為ServletOutputStreamを用意する必要がある。

※バイナリデータを見るには
■バイナリエディタが必要です。
http://www.zob.ne.jp/~c.mos/soft/bz.html

※CSVデータの扱いはCSVエディタが便利
■CSVエディタ CASSAVA
http://www.asukaze.net/soft/cassava/
 
Comment
 
 
UTF-8のBOMはかなり曲者ですね。私も昔かなり苦労させられましたよ。

BOMの有り無しを指定できない、へっぽこエディタでPerlのコードをUTF-8でコーディング、そしてサーバーに設置しても何故かエラーになってしまうという問題に遭遇・・・

実はエディタが勝手にBOMを付加してたというオチ(しかもエディタからは見えない!見る設定もない!)

プログラミング言語は文法にシビアなので、BOMをただのゴミと認識しエラーを吐いていたのが原因でした。秀丸に乗り換えてやっと解決^^;
  [URL][Edit]
なるほど。BOMの勝手な追加は痛いね。
やっぱり秀丸様様だね。
  [URL][Edit]
ありがとうございました。この問題で、結構悩んでました。
  [URL][Edit]
さいさん>お役に立てて何よりです。難解だった問題や、自分の知らなかったことを今後もブログにしていきます。
  [URL][Edit]






(編集・削除用)


管理者にだけ表示を許可
 
Trackback
 
 
http://mism.blog13.fc2.com/tb.php/202-bfc9a5f6
 
 
プロフィール
 
 

えむ

  • Author:えむ
  • 現在ベンチャー企業を経営する傍ら
    兼業ミュージシャンとして活動中。
    お問い合わせはこちらまで。
 
 
最近の記事
 
 
 
 
最近のコメント
 
 
 
 
最近のトラックバック
 
 
 
 
月別アーカイブ
 
 
 
 
カテゴリー
 
 
 
 
ブロとも申請フォーム
 
 
 
 
ブログ内検索
 
 
 
 
RSSフィード
 
 
 
 
リンク
 
 
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。