【问题标题】:How can i console origin value using node?如何使用节点控制台原始值?
【发布时间】:2021-10-09 06:28:53
【问题描述】:

当我尝试打印一个特殊的字符串时,我得到了混乱的代码:

const str = "\xa7\xe6\xd9\xe6\x95\xe6\xe4\xb0\x82L\x13"
console.log(str) // §æÙææä°L
// expect: the origin value, "\xa7\xe6\xd9\xe6\x95\xe6\xe4\xb0\x82L\x13".

看来终端会自动使用utf8对字符串进行编码。

当我使用节点时,如何打印或获取原始输入:"\xa7\xe6\xd9\xe6\x95\xe6\xe4\xb0\x82L\x13"

【问题讨论】:

  • const str = "\\xa7\\xe6\\xd9\\xe6\\x95\\xe6\\xe4\\xb0\\x82L\\x13"
  • 接近尾声的L 是一个错误还是它应该存在?

标签: node.js console special-characters


【解决方案1】:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/raw

const str = String.raw`\xa7\xe6\xd9\xe6\x95\xe6\xe4\xb0\x82L\x13`;
console.log(str); // \xa7\xe6\xd9\xe6\x95\xe6\xe4\xb0\x82L\x13

如果您要打印字符串变量,Javascript(为了简洁起见,我将仅使用您的第一个“字符”来说明)永远不会打印像 \xa7 这样的东西作为字符的视觉再现。这是因为代码值为 0xA7 的字符(请参见下面的倒数第二段)使用与大多数输出​​设备兼容的明确定义的字形 § 可以完美地打印出来(不像 \x07 BEL 之类的东西)。

请注意,"\xa7" 等字符串文字不是一个字节或一个字节。 JS 字符串以UTF-16 编码,因此每个字符要么是 2 个字节,要么是 4 个字节(对于那些需要代理的字符)。 JS 字符串中代码点值等于 0xA7 (SECTION SIGN U+00A7) 的字符具有符号 \u{00a7}(而不是 \xa7),在打印时呈现为 §

如果给变量赋值\xa7的文字值,我认为JS将其视为两个字节:0x00和0xA7(顺序取决于字节序),从而形成代码点U+00A7的UTF-16编码.

为了正确理解和回答你的问题,你应该对你提出的那个“特殊字符串”的起源做一些澄清。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多