UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

38 lines (34 loc) 1.23 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); /** * 将 ArrayBuffer 转换为字符串 * 支持多种字符编码,优先使用 TextDecoder API * @param buffer - 要转换的 ArrayBuffer * @param encoding - 字符编码,默认为 'utf-8' * @returns 转换后的字符串 * @example * ```ts * const buffer = new ArrayBuffer(8); * const str = ab2str(buffer); // 使用 UTF-8 编码 * const gbkStr = ab2str(buffer, 'gbk'); // 使用 GBK 编码 * ``` */ function ab2str(buffer) { var encoding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'utf-8'; if (typeof TextDecoder !== 'undefined') { return new TextDecoder(encoding).decode(new Uint8Array(buffer)); } // 备选方案 var byteArray = new Uint8Array(buffer); var result = ''; for (var i = 0; i < byteArray.length; i++) { result += String.fromCharCode(byteArray[i]); } // 如果是 GBK 编码,可能需要特殊处理 if (encoding.toLowerCase() === 'gbk' || encoding.toLowerCase() === 'gb2312') { // 这里可以集成第三方 GBK 解码库 console.warn('GBK编码可能需要特殊处理,建议服务器使用UTF-8'); } return result; } exports.ab2str = ab2str;