【问题标题】:node JS console log ascii symbol节点 JS 控制台日志 ascii 符号
【发布时间】:2015-09-11 11:59:23
【问题描述】:


我正在为我的应用程序使用节点 JS,我想在终端中打印 ascii 符号。
Here 是一个 ascii 符号表。请检查扩展 ASCII 代码字段。我想打印正方形或圆形,例如 178 或 219。


谁能告诉我,怎么办?
谢谢

【问题讨论】:

  • 我尝试像在 html 代码中一样打印它们。 console.log("&178;");
  • 而且我找不到这样做的方法

标签: node.js ascii console.log


【解决方案1】:

与其他几种语言一样,Javascript 也受到 UTF-16 的影响 诅咒。除了 Javascript 有更糟糕的形式,UCS-2 诅咒。 charCodeAt 和 fromCharCode 之类的东西只处理 16 位数量,而不是真正的 21 位 Unicode 代码点。 因此,如果你想打印出像?,U+1D49C, MATHEMATICAL SCRIPT CAPITAL A,你不能指定一个字符 但是两个“字符单位”:“\uD835\uDC9C”。

请参考此链接:https://dheeb.files.wordpress.com/2011/07/gbu.pdf

您想要的字符不是可打印的 ASCII 字符。在 linux 上,您可以通过运行以下命令打印所有可打印的 ascii 字符:

 for((i=32;i<=127;i++)) do printf \\$(printf '%03o\t' "$i"); done;printf "\n"

 man ascii

所以你可以做的是打印 unicode 字符。这是所有可用 unicode 字符的列表,您可以选择一个与您想要的字符几乎相同的字符。

http://unicode-table.com/en/#2764

我已经在 Windows 终端上进行了测试,但它仍然没有显示所需的字符,但它在 linux 上运行。如果它仍然无法正常工作,您必须确保在/etc/rc.conf 中设置LANGUAGE="en_US.UTF-8" 和在/etc/locale.conf 中设置LANG="en_US.UTF-8"

所以在节点控制台上打印出这样的东西:

console.log('\u2592 start typing...');

会输出这个结果:

▒ start typing...

【讨论】:

  • OP 专门询问了 ASCII 字符。 178 + 219 都是可打印的 ASCII 字符,它们在 Windows 中完全没有任何问题。 UTF-8 / UTF-16 当然是完全不同的问题。
【解决方案2】:

实际上,如果您只关心 ASCII,那根本不应该是一个真正的问题。您只有必须正确转义它们。一个很好的参考是https://mathiasbynens.be/notes/javascript-escapes

console.log('\xB2 \xDB')

适用于 Windows (cmd shell) 和 mac OS 下的最新节点。对于 ASCII 字符,您可以将它们转换为十六进制并在字符串中添加 \x。试试node -e "console.log('\xB2')"

【讨论】:

    【解决方案3】:

    当您尝试这个答案并且它有效时,您可能想尝试:

    node -e "console.log('\x07')"

    【讨论】:

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