Javascript 如何将字符串转换为它';真正的二进制表示法(UTF-8或当前使用的任何形式)?

Javascript 如何将字符串转换为它';真正的二进制表示法(UTF-8或当前使用的任何形式)?,javascript,c#,node.js,utf-8,binary,Javascript,C#,Node.js,Utf 8,Binary,我想尝试UTF-8和Unicode,为此我想建立一个小网站,帮助我更好地理解编码 首先,我希望能够输入一些文本,然后获得字符串的实际二进制编码。为此,我正在从C#或Java中搜索一个与“.GetBytes”等价的文件。我不想要解析的字符码 这里有一个C#函数,我想用JavaScript重现 string ToBinary(string input) { //this is the part I am looking for in JavaScript var utf8Bytes

我想尝试UTF-8和Unicode,为此我想建立一个小网站,帮助我更好地理解编码

首先,我希望能够输入一些文本,然后获得字符串的实际二进制编码。为此,我正在从C#或Java中搜索一个与“.GetBytes”等价的文件。我不想要解析的字符码

这里有一个C#函数,我想用JavaScript重现

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”
  • “@™”=>“01000000110000101001001 11000010 10101110”

  • String.prototype.charCodeAt(…)
    仅当字符串仅包含ASCII字符时才能正常工作。如果要处理其他字符,必须使用标准的
    textcoder

    const te=新的文本编码器('utf-8')
    函数toBinaryRepr(str){
    返回数组.from(te.encode(str))
    .map(i=>i
    .toString(2)
    .padStart(8,'0'))
    .加入(“”)
    }
    // '01100001 01100010 01100011'
    toBinaryRepr(“abc”)
    // '01000000 11000010 10101001 11000010 10101110'
    toBinaryRepr(“@©®”)
    // '11110000 10011111 10011000 10000000 11110000 10011111 10011000 10000100'
    
    toBinaryRepr('
    “abc”).split('').map(i=>i.charCodeAt(0).toString(2).padStart(8,'0')).join('');
    诸如此类,如果我没有遗漏某些内容,您只需要处理前导零。不过,表情可能需要进一步的工作。如果您计算“®”。charCodeAt(0);您将得到174。174是此字符的Unicode编号,但如果UTF-8编码,它不是内存中的实际值。在UTF-8中,此字符占用两个字节“11000010”和“10101110”。这是我想要得到的。谢谢,TextEncoder正是我要找的:-)警告是一个很好的信息。我已经对关键字很满意了。”TextEncoder“通过它,我找到了API文档,现在一扇通向新世界的门在我面前打开了;-)