Scalaでcsvをexcelで開くときにUTF-8で解釈させ文字化けを防ぐ方法
Kazuki Moriyama (森山 和樹)
エクセルで普通にutf-8のcsvを開くときの問題
- utf-8形式をshift_jisで読み込もうとするので日本語系がバグる
解決方法
- BOMを指定してutf-8であることを指定する
BOMとは
- Byte Order Maskの略
- テキストデータの先頭数バイトのデータのこと
- これによってプログラムはテキストがなんの文字コードであるかを判別している
- utf-8の場合は先頭3byteが
0xEF 0xBB 0xBF
になっている
Scalaでやる
import java.nio.charset.StandardCharsets.UTF\_8
val texts: List\[Byte\] = ... // なんかのテキストデータのbyte列
val utf\_8texts = "\\uFEFF".getBytes(UTF\_8) ++ texts // BOMが指定されたtext byte列