2018年02月17日


ブラウザ上のテキストをレジストリデータのエクスポートである .reg として保存させる JavaScript のコード

FileSaver.js でローカルにテキストファイルを保存させる事ができます。その際、テキストデータを JavaScript の unicode の配列に変換して、さらに Uint16Array で new Blob() に渡す為のデータに変換します。先頭に unicode 用の BOM をセットして保存すると、unicode のテキストして保存されます。

これは、拡張子が .reg のデータを保存する為に行っていますが、実際には shift_jis のデータでも Windows には登録できると思います。ただ、その場合はもう一つライブラリが必要になります。

JavaScript の内部コード文字列を SHIFT_JIS としてダウンロードさせる方法

<script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2014-11-29/FileSaver.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>

<script>
$(function(){
	
	$("#btn").on("click",function(){

		var text = $("#text").val();
		text = text.replace(/\n/g, '\r\n');
		var array = str2array( text );
		var unicode_data = new Uint16Array(array);
		var bom = new Uint8Array([0xFF, 0xFE]);	// unicode bom
		saveAs( new Blob( [bom,unicode_data], {type: "text/plain;charset=unicode"})
				,"target.reg"
		);		

	});
});

var str2array = function(str) {
	var array = [],i,il=str.length;
	for(i=0;i<il;i++) array.push(str.charCodeAt(i));
	return array;
};
</script>

<textarea id="text" style='width:400px;height:100px;'></textarea>
<br>
<input id="btn" type="button" value="保存"> 



posted by at 2018-02-17 00:17 | JavaScript | このブログの読者になる | 更新情報をチェックする