【发布时间】:2016-07-25 21:10:28
【问题描述】:
需要将 SOH 值 '\u0001' 的 unicode 转换为 Ascii。为什么这不起作用?
var soh = String.fromCharCode(01);
它返回 '\u0001'
或者当我尝试时
var soh = '\u0001'
它返回一个笑脸。
如何让 unicode 成为正确的 SOH 值(一个空白的不可打印字符)
【问题讨论】:
标签: javascript node.js ascii
需要将 SOH 值 '\u0001' 的 unicode 转换为 Ascii。为什么这不起作用?
var soh = String.fromCharCode(01);
它返回 '\u0001'
或者当我尝试时
var soh = '\u0001'
它返回一个笑脸。
如何让 unicode 成为正确的 SOH 值(一个空白的不可打印字符)
【问题讨论】:
标签: javascript node.js ascii
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 中的字符串,只需查看上面的第二个链接。
【讨论】:
ascii 将是一个字节数组:0x00 0x01 您需要提取 \u 之后的 unicode 代码点并调用 parseInt,然后从数字中提取字节。 JavaScript 可能不是最好的语言。
【讨论】: