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列
ScalaのF[_]と高カインド型(Higher Kinded Type)を完全に理解していく 代数的データ型Deep Dive in Scala ZIO小史
View Comments
There are currently no comments.