All Articles

PHPでUTF-8 with BOMのcsvを扱う

BOMとは

  • バイトオーダーマークの略
  • ファイルの先頭に数バイトを付与して、それ以降のデータがunicodeであることを表す

この数バイトが原因になる。

解決法

  • pack()でBOMを表す文字列を作成して、preg_replace()で除去することが出来た。

    bom=pack(H,EFBBBF);bom = pack('H*', 'EFBBBF');str = preg_replace(”/^bom/",,bom/", '',bomStr);

参考