t-comm
Version:
专业、稳定、纯粹的工具库
34 lines (32 loc) • 1.15 kB
JavaScript
/**
* 将 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;
}
export { ab2str };