需要将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 unicode 到 ASCII,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38577478/