seckie's programming memo

プログラミングするにあたって調べたことなどのメモ。たまにひどい英語で書く。

Excelから書き出したCSVファイルをブラウザJavaScriptで扱う

まずはこのjQueryプラグインを試す。

…が、マルチバイト文字がうまく扱えないようなので使うのやめる。

そこで、CSVをオブジェクト化する処理は自前で実装。

問題はここから。 ExcelからCSV書き出しするとエンコーディングShift_JIS になる。 これがガンで、フロントエンドオンリーだとIE 9以前でどうやっても文字化けが直せない。

参考:

こんな感じでAjaxリクエストする。

$.ajax(CSVPATH, {
  dataType: "text",
  mimeType: "text/plain;charset=Shift_JIS",
  beforeSend: function (xhr) {
    xhr.overrideMimeType("text/plain;charset=Shift_JIS");
  },
  success: function (data) {    
    // do something...
  }
});

xhr.overrideMimeType(); を使ってMimeTypeを上書きしてやる。でもこれだけだとIE 9以前がダメなので .htaccess文字コードを強制してやるしかない。

AddDefaultCharset Shift_JIS

それか、Shift_JISを諦めて、予めCSVUTF-8にするか、どちらか。