Вызов new Blob([DOMString])
автоматически преобразует вашу DOMString (UTF-16) в UTF-8.
Так что все, что вам нужно, это new Blob( [JSON.stringify(obj)] )
.
Обратите внимание, что type
здесь не будет использоваться (это будет только в случае извлечения или если вы действительно пытались читать BLOB-объекты), и в любом случае будет иметь место только то, как файл можетполучить чтение (т. е. FileReader.readAsText () ), но не фактическое содержимое файла, поэтому нет необходимости устанавливать его.
setJSONForDownload([{ name: "שלומית", last: "רעננה"}]);
function setJSONForDownload(obj) {
obj = obj || [];
const length = obj.length;
if (length) {
// DOMString
const str = JSON.stringify(obj);
// text/plain;UTF-8
const blob = new Blob([str]);
const url = URL.createObjectURL(blob);
const downloadElem = document.getElementById('download');
downloadElem.innerText = `Download ${length} pages scraped`;
downloadElem.setAttribute('href', url);
downloadElem.setAttribute('download', 'data.json');
} else {
document.getElementById('download').innerText = `No data to download...`;
}
}
<a id="download">dl</a>