在.NET中获取字符串的字节数组并在Javascript中转换回来

时间:2014-03-20 14:25:18

标签: javascript .net character-encoding byte

我需要在两种不同类型的编程环境中使用字符串的字节。

第一个环境是.NET,我得到字符串的字节如下:

Encoding.UTF8.GetBytes("Hello")

这给我输出:48656C6C6F

然后下一个环境是Javascript,我试图将字节数组转换回字符串格式:

var str = unescape(encodeURIComponent("Hello"));
var arr = [];

for (var i = 0; i < utf8.length; i++) {
    arr.push(utf8.charCodeAt(i));
}

当我输出数组时,我得到:72,101,108,108,111

任何人都知道这笔交易是什么?谢谢大家。

编辑:我在浏览器中输出数组:

document.getElementById("demo").innerHTML = arr;

3 个答案:

答案 0 :(得分:0)

您正在将字符转换为utf8字符代码。 使用String.fromCharCode(charCode)将其作为字符串。

答案 1 :(得分:0)

如果你已经将你的值作为String,你可以将它直接注入到你的Javascript中,如果它直接在ASP.NET页面上。

var str = '<%= MyStringPropertyFromTheCodeBehind %>';

72,101,108,108,111是“Hello”

中字母的ASCII码

48656C6C6F是相同的值但是在HEX(0x48 = 72 =&gt;“H”)中,因为.NET字符串是UTF-16(2字节字符),其中Javascript使用UTF-8(单字节)字符)

结帐http://www.asciitable.com/

答案 2 :(得分:0)

因此,根据Babak和norbertVC的回复,我采用了他们的见解并提出了一个替代解决方案,该解决方案完全符合我的目标:

我没有使用“Encoding.UTF8.GetBytes()”,而是使用了“ASCIIEncoding.ASCII.GetBytes()”,它允许我与Javascript中完成的相同转换完全匹配。

所以,一旦我得到了我的字节数组,将其放入一个字符串并将数据发送到我的第二个应用程序。在javascript中,我将获得原始字节数组字符串的子字符串,并使用String.fromCharCode()

分段获取匹配的ASCII字符