Excelから書き出したCSVファイルをブラウザJavaScriptで扱う
…が、マルチバイト文字がうまく扱えないようなので使うのやめる。
そこで、CSVをオブジェクト化する処理は自前で実装。
問題はここから。 ExcelからCSV書き出しするとエンコーディングが Shift_JIS になる。 これがガンで、フロントエンドオンリーだとIE 9以前でどうやっても文字化けが直せない。
参考:
- http://ryu-tan.net/blog/?p=8
- http://pooledraft.com/2012/09/20/%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E6%84%9F%E3%81%98%E3%81%AEfaq%E3%82%92jquery%E3%81%A7%E3%80%82/
- http://d.hatena.ne.jp/teramako/20080913/p1
こんな感じで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