52 views
B!0X

Scalaでcsvをexcelで開くときにUTF-8で解釈させ文字化けを防ぐ方法

scalaでcsvをexcelで開くときにutf-8で解釈させ文字化けを防ぐ

エクセルで普通に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列