需要将SOH值'\ u0001'的unicode转换为Ascii。为什么这不起作用?

var soh = String.fromCharCode(01);
返回'\ u0001'
或者当我尝试

var soh = '\u0001'
它返回一张笑脸。
我怎样才能使unicode变成正确的SOH值(一个空白的不可打印字符)

最佳答案

JS没有ASCII字符串,它们本质上是UTF-16。

在浏览器中,您很不走运。如果您正在为node.js编码,那么您很幸运!

您可以使用缓冲区将字符串转码为八位字节,然后随意处理二进制数据。但是一旦弄乱了缓冲区,就不一定会从缓冲区中取出有效的字符串。

无论哪种方式,您都必须在此处阅读更多信息:

https://mathiasbynens.be/notes/javascript-encoding

或在这里:

https://nodejs.org/api/buffer.html



编辑:在注释中,您说您使用的是node.js,因此这是上面第二个链接的摘录。

const buf5 = Buffer.from('test');
// Creates a Buffer containing ASCII bytes [74, 65, 73, 74].


要创建嵌入在通用ASCII字符串中的SOH字符,请使用通用转义序列\x01,如下所示:

const bufferWithSOH = Buffer.from("string with \x01 SOH", "ascii");


这应该做。然后,您可以将bufferWithSOH内容发送到输出流,例如网络,控制台或文件流。

Node.js文档将指导您如何很好地使用Buffer中的字符串,只需查找上面的第二个链接即可。

关于javascript - Javascript Unicode转换为ASCII,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38577478/

10-09 20:55