工作中需要对文件或者文本进行编码处理防止乱码时,一开始想使用自带的**TextEncoder,**但是这个只能支持utf-8格式的

Untitled

在uniapp社区有人提到使用npm包text-decoding

https://github.com/idiocc/text-decoding

这个是在这个开源库的基础上改的

https://github.com/inexorabletash/text-encoding

使用了下还不错,解决了我的需求,输入表情也不会乱码了

编码

import { TextDecoder, TextEncoder } from 'text-decoding';

// gbk18030编码文本转16进制数据
export const gbk18030HexString = inputString => {
  let uint8Array = new TextEncoder('gb18030', { NONSTANDARD_allowLegacyEncoding: true }).encode(inputString);
  const hexString = Array.from(uint8Array, byte => byte.toString(16).padStart(2, '0')).join('');
  return hexString.toUpperCase();
};

解码

export const decodeData = buffer => {
  let data = new TextDecoder('gb18030', { NONSTANDARD_allowLegacyEncoding: true }).decode(buffer);
  return data;
};

看了下介绍,支持的编码挺多的

Untitled