用Blob对象: function stringToBlob(str, contentType) { return new Blob([new Uint8Array([...str].map(ch => ch.charCodeAt(0)))], { type: contentType }); } const blob = stringToBlob(textData, 'application/zip'); const url = URL.createObjectURL(blob); 用ArrayBuffer和DataView来控制二进制数据的读写: function stringToArrayBuffer(str) { const buffer = new ArrayBuffer(str.length); const view = new DataView(buffer); for (let i = 0; i < str.length; i++) { view.setUint8(i, str.charCodeAt(i)); } return buffer; } const buffer = stringToArrayBuffer(textData); 修复ISO-8859-1编码: function encodeIso8859_1(arrayBuffer) { const uint8Array = new Uint8Array(arrayBuffer); return String.fromCharCode(...uint8Array); } function decodeIso8859_1(str) { const uint8Array = new Uint8Array(str.length); for (let i = 0; i < str.length; i++) { uint8Array[i] = str.charCodeAt(i); } return uint8Array.buffer; }