  
  
CSVダウンロードをJavaScriptでやりたいと思っています。

「UTF-16
BOMあり」に対応したいのですが、実際下のコードで対応できたファイルを見ると文字コードがhexedicimelで、中身が000になってしまいどうもできていないようです。  
どこが悪いのか知りたいです。

[code]

    function exportCSV(records) {
       let data = records.map((record)=>record.join('\t')}).join('\r\n');
       csv_string = "\ufeff" + data; //UTF-16
    
        var array = [];
        for (var i=0; i<csv_string.length; i++){
         array.push(csv_string.charCodeAt(i));
        }
       var csv_contents = new Uint16Array(array);
    
       var blob = new Blob([csv_contents] , {
                                    type: "text/csv;charset=utf-16;"
       });
       let url = (window.URL || window.webkitURL).createObjectURL(blob);
       let link = document.createElement('a');
       link.download = 'result.csv';
       link.href = url;
       document.body.appendChild(link);
       link.click();
       document.body.removeChild(link);
    };
    
[/code]


CC BY-SA 4.0
2021-04-19T07:09:12.777
75376
2021-04-20T00:09:30.870
2021-04-20T00:09:30.870
3060
43728
question
javascript csv 文字コード
JavaScriptでUTF-16でCSVファイルをダウンロード対応したい


手元の環境で下記のコードをUTF-8で保存して実行したところ、正常にUTF-16 LE BOMとしてTSVファイルを出力できました。

ご質問のコードは`record.join('\t')}`に`}`が付いていて実行できないなど、本来のコードと異なるようですので、サンプルコード作成時に書き換えて削った箇所に原因があるかもしれません。

データ付きで単体動作する[再現可能な短いサンプルコード](https://ja.stackoverflow.com/help/minimal-
reproducible-example)となるように質問文を編集していただけますでしょうか。

[code]

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>サンプル</title>
    </head>
    <body>
    <script>
    function exportCSV(records) {
       let data = records.map((record)=>record.join('\t')).join('\r\n');
       csv_string = "\ufeff" + data; //UTF-16
    
        var array = [];
        for (var i=0; i<csv_string.length; i++){
         console.log(csv_string[i]);
         array.push(csv_string.charCodeAt(i));
        }
       var csv_contents = new Uint16Array(array);
    
       var blob = new Blob([csv_contents] , {
                                    type: "text/csv;charset=utf-16;" 
       });
       let url = (window.URL || window.webkitURL).createObjectURL(blob);
       let link = document.createElement('a');
       link.download = 'result.csv';
       link.href = url;
       document.body.appendChild(link);
       link.click();
       document.body.removeChild(link);
    };
    
    rs = [["a", "b", "c"],
          ["A", "B", "C"],
          ["い", "ろ", "は"]];
    exportCSV(rs);
    </script>
    </body>
    </html>
    
[/code]


CC BY-SA 4.0
2021-04-19T11:24:34.373
75385
2021-04-19T11:24:34.373
9820
75376
answer