【问题标题】:Javascript unicode to ASCIIJavascript unicode 到 ASCII
【发布时间】: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


    【解决方案1】:

    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 中的字符串,只需查看上面的第二个链接。

    【讨论】:

    • FWIW 您也可以使用iconv-lite 在浏览器(以及节点)中的编码之间进行转换。
    • 很高兴知道!谢谢。
    • 我在 node 中做这件事,但我从来没有用 ASCII 字符做过任何事情。要正确显示 SOH ascii 字符似乎是不可能的。
    • 我已经更新了我的答案。顺便说一句,“SHOW”是什么意思?显示在哪里?在 HTML 页面中?
    • 问题是当我将消息发送到另一台服务器时,他们看到'\u0001',我只是希望它是正确的,这是令人沮丧的一周......
    【解决方案2】:

    ascii 将是一个字节数组:0x00 0x01 您需要提取 \u 之后的 unicode 代码点并调用 parseInt,然后从数字中提取字节。 JavaScript 可能不是最好的语言。

    【讨论】:

    • 谢谢,我有点坚持使用 Javascript 并且迫切希望让它工作。有这样的例子吗?我从来没有真正处理过 ASCII 字符,非常感谢任何帮助。
    • 你想做什么?
    • 我有一个连接到 C++ 服务器的应用程序(在 windows 上的 nodejs 中),问题是当我将消息发送到服务器时,它显示的不是正确的“SOH”ascii 字符笑脸或 unicode('\0001') 不能作为分隔符。我需要它是那个空格或它应该是的任何字符,并且对于 C++ 应用程序来说是可读的,谢谢!
    猜你喜欢
    • 2018-08-25
    • 2011-05-27
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2011-02-05
    • 1970-01-01
    • 2012-12-26
    • 2015-04-28
    相关资源
    最近更新 更多