JavaScriptでSJISのファイルを作成する方法(Node.js環境)

クライアント側(ローカルPC側)だけでUTF8をSJISに変換出来るか?

結論から言うと、クライアント側のJqueryだけでSJISファイルを作成することは出来ませんでした。
正確には、encoding.jsのようなライブラリを使ってUTF-8をSJISに変換することは出来るようですが
外部のライブラリを使えない環境では、難しそうでした(見つけられなかっただけかも知れません)。

クライアント側で、外部ライブラリが使用出来ないので、サーバ側に入っていた「iconv-lite」を使ってUTF8からSJISに変換することにしました。
iconv-liteとは、Node.jsで文字エンコード変換を行うためのモジュールです

サーバ側(Node.js環境)でUTF8をSJISに変換する方法

サーバ側で変換する方法は、色々ありそうでしたが
今回は以下の方法で解決しました。
 1.クラアント側:サーバ側へUTF8の文字列を送る。
 2.サーバ側  :UTF8の文字列をSJISのBufferに変換する
         :SJISのBuffer文字列をクライアント側に返す
 3.クラアント側:サーバ側から受け取ったBuffer文字列(SJIS)を復元する
※イメージなので、このまま記載しても動きません。
 

クライアント側JS

$scope.fileDownload = function(){
  let contextUtf8 = "日本語文字列";
  service.utf8ToSjis(context).then(function (data){ // サーバ側にUTF8で送る
    let context = data.contextSjis;
    let byteArray = new Unit8Array(context); // 受け取ったBuffer文字列(SJIS)を元に戻す
    let blob = new Blob([byteArray], {type: "text/plain"});
    let link = document.createElement("a");
    link.download = "download.txt";
    link.href = (window.URL || window.webkitURL).createObjectURL(blob);
    link.click();
    link.remove();
  }).catch(function(err) {
  }).finally(function(){
  });
}
サーバ側JS

const iconv = require('iconv-lite');

this.utf8ToSjis = function(context){
  let contextSjis = iconv.encode(context, 'SJIS');
  let result = {
    contextSjis
  }:
  return result;
}