我需要在两种不同类型的编程环境中使用字符串的字节。
第一个环境是.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;
答案 0 :(得分:0)
您正在将字符转换为utf8字符代码。
使用String.fromCharCode(charCode)
将其作为字符串。
答案 1 :(得分:0)
如果你已经将你的值作为String,你可以将它直接注入到你的Javascript中,如果它直接在ASP.NET页面上。
var str = '<%= MyStringPropertyFromTheCodeBehind %>';
72,101,108,108,111
是“Hello”
48656C6C6F
是相同的值但是在HEX(0x48 = 72 =&gt;“H”)中,因为.NET字符串是UTF-16(2字节字符),其中Javascript使用UTF-8(单字节)字符)
答案 2 :(得分:0)
因此,根据Babak和norbertVC的回复,我采用了他们的见解并提出了一个替代解决方案,该解决方案完全符合我的目标:
我没有使用“Encoding.UTF8.GetBytes()”,而是使用了“ASCIIEncoding.ASCII.GetBytes()”,它允许我与Javascript中完成的相同转换完全匹配。
所以,一旦我得到了我的字节数组,将其放入一个字符串并将数据发送到我的第二个应用程序。在javascript中,我将获得原始字节数组字符串的子字符串,并使用String.fromCharCode()
分段获取匹配的ASCII字符