Javascript将Unicode八进制字节转换为文本

Javascript将Unicode八进制字节转换为文本,javascript,unicode,encoding,character-encoding,octal,Javascript,Unicode,Encoding,Character Encoding,Octal,我尝试使用Javascript将一系列八进制字节转换为文本,如下所示: 输入为\330\265,输出为“” 以下工具成功地做到了这一点: 我正在尝试复制这个逻辑,这是一个非常简单的任务,您只需要使用Number.toString(radix)方法来转换从String.charCodeAt(index)返回的十进制整数值,对字符串进行编码 使用String.fromCharCode(charCode)和parseInt(numberString,radix)的组合,您可以通过使用基数的值8

我尝试使用Javascript将一系列八进制字节转换为文本,如下所示:

输入为\330\265,输出为“”

以下工具成功地做到了这一点:


我正在尝试复制这个逻辑,这是一个非常简单的任务,您只需要使用
Number.toString(radix)
方法来转换从
String.charCodeAt(index)
返回的十进制整数值,对字符串进行编码

使用
String.fromCharCode(charCode)
parseInt(numberString,radix)
的组合,您可以通过使用基数的值8并将其传递给
fromCharCode
方法来解码八进制值

程序结果
/*将控制台输出重定向到HTML。*/document.body.innerHTML='';
console.log=function(){document.body.innerHTML+=[].slice.apply(参数).join(“”)+'\n';};
var八字节,str;
log('Input:',str=“Hello World”);
log('Encode:',octBytes=Encode(str));
log('Decode:',Decode(八字节));
函数编码(str){
返回decToOctBytes(charsToBytes(str.split(“”)).join(“”);
}
函数解码(八字节){
返回bytesToChars(octtodebytes(octBytes.split(“”)).join(“”);
}
函数charsToBytes(chars){
返回chars.map(函数(char){
返回char.charCodeAt(0);
});
}
函数bytesToChars(字节){
返回bytes.map(函数(字节){
返回字符串.fromCharCode(parseInt(字节,10));
});
}
函数decToOctBytes(decBytes){
返回decBytes.map(函数(dec){
返回('000'+12月至字符串(8)).substr(-3);
});
}
函数octToDecBytes(八字节){
返回octBytes.map(函数(oct){
返回parseInt(10月8日);
});
}

body{font-family:monospace;white-space:pre;}
此解决方案不适用于非ascii字符,请尝试示例中的字符\“我得到065,转换回来后我得到字符5”。我期望得到的是330265。我想这里的问题是将两个字节转换成一个字符。
Input:   Hello World
Encode:  110 145 154 154 157 040 127 157 162 154 144
Decode:  Hello World