読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

csv2tableで改行コードCRのCSVファイルを読み込むと死ぬ

JavaScript jQuery

CSVの改行コードによって、挙動が変わる問題

表題のとおりですが、例によって、とりあえずこういう感じのCSVを用意する。

"日付","結果","遠征","燃料","弾薬","鋼材","ボーキ","開発資材","高速修復材","高速建造材",
"2014-12-14 08:04:36","大成功","水上機基地建設
test","828","0","345","345","0","1","0",
"2014-12-14 08:19:08","成功","長距離練習航海","0","100","30","0","0","0","0",
"2014-12-15 22:55:59","成功","長距離練習航海","0","100","30","0","0","1","0",
"2014-12-15 22:56:09","大成功","海上護衛任務","345","345","34","34","0","0","0",

htmlはこんな感じ。

<html>
  <header>
    <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
    <script src="./csv2table.mk2.js" type="text/javascript" charset="utf-8"></script>
  </header>
  <body>
    <h3>CR</h3>
    <div id="view0"></div>
    <script>
      $(function(){
      $('#view0').csv2table('./data_cr.csv');
      });
    </script>
    <h3>LF</h3>
    <div id="view1"></div>
    <script>
      $(function(){
      $('#view1').csv2table('./data_lf.csv');
      });
    </script>
    <h3>CRLF</h3>
    <div id="view2"></div>
    <script>
      $(function(){
      $('#view2').csv2table('./data_crlf.csv');
      });
    </script>
  </body>
</html>

LFとCRLFのCSVは問題ないけど、CRのCSVは見た目がおかしい。

f:id:shigemk2:20150613152351p:plain

これはcsv2tableの問題ではなく、むしろjQuery本体の問題っぽい。

csv2tableの175行目に、get()を使っている箇所があるけど、

       $.get(fetch_url,"",function(data,textStatus){

もうココの時点でconsole.logしたら改行コードによって挙動が変わってしまっている。しかも、CRだと改行もまるごと潰れてしまっているので、若干お手上げ気味。

CRベースのシステムなんて最近だと見当たらないから、無視したらいいっていう選択肢もあるっちゃあるかもしれないけど…

なお、CSV内のデータに改行がある場合は、
に置換するかどうか選べるようにしました。

csv2table.mk2.js