我想尝试使用UTF-8和Unicode,为此,我想建立一个小型网站,以帮助我更好地理解编码。首先,我希望能够输入一些文本,然后获得字符串的实际二进制编码。为此,我正在寻找与C#或Java中的“ .GetBytes”等效的内容。我不想要解析的CharCodes!这里是我想在JavaScript中重现的C#函数string ToBinary(string input){ //this is the part I am looking for in JavaScript var utf8Bytes = Encoding.UTF8.GetBytes(input); var bytesFormatedToBin = utf8Bytes.Select(b => Convert.ToString(b, 2).PadLeft(8, '0')); return string.Join(' ', bytesFormatedToBin);}以下是一些示例结果:“ abc” =>“ 01100001 01100010 01100011”“ @©®” =>“ 01000000 11000010 10101001 11000010 10101110”“??” =>“ 11110000 10011111 10011000 10000000 11110000 10011111 10011000 10000100”有没有办法在JavaScript中实现这一目标?
1 回答

烙印99
TA贡献1829条经验 获得超13个赞
String.prototype.charCodeAt(...)仅当字符串仅包含ASCII字符时才能正常工作。TextEncoder如果要处理其他字符,则必须使用标准:
const te = new TextEncoder('utf-8')
function toBinaryRepr(str) {
return Array.from(te.encode(str))
.map(i => i
.toString(2)
.padStart(8, '0'))
.join(' ')
}
// '01100001 01100010 01100011'
toBinaryRepr('abc')
// '01000000 11000010 10101001 11000010 10101110'
toBinaryRepr('@©®')
// '11110000 10011111 10011000 10000000 11110000 10011111 10011000 10000100'
toBinaryRepr('??')
警告:TextEncoder在较旧的Node.js版本中不是全局构造函数-如果出现TextEncoder未定义的错误提示,请尝试通过以下方式将其导入:
const { TextEncoder } = require('util')
添加回答
举报
0/150
提交
取消