使用Node.js进行UTF-8控制台日志输出

3
我从一个mysql数据库中获得了utf8信息,我想使用console.log将其输出到控制台。但是它显示的是“方框”字符而不是utf8数据。我在哪里丢失了数据?应该怎么做来解决这个问题呢?问题是读取DB中的数据时出现的吗?(使用felixge-node-mysql-v0.9.5-1)还是在输出到控制台时?(使用console.log),或者可能是控制台本身的问题(Windows命令窗口设置为字体“Lucida Console”)。
更新:我现在相信这是与Windows命令窗口的字体有关的问题。当我使用powershell窗口运行相同的节点脚本时,我看到的字符不像我期望的那样。然而,当我尝试将它们粘贴到这个浏览器窗口中时,它们突然变成了正确的字体和字符。

听起来你的终端使用的字体不包含你要打印的字符的字形,或者它们被设置为除UTF8之外的编码。 - lanzz
1个回答

1

虽然我仍然希望有更好的解决方案,但我现在找到的解决方案是:

我将使用Windows PowerShell ISE。
在其中运行以下命令:
chcp 65001

从WPSISE的最低窗格中运行node.exe my.js会在中间窗格中得到我想要的完全输出。

另一个要提到的问题是,如果我尝试打开cmd.exe窗口并在其中运行chcp 65001,然后执行我的脚本,我会得到以下错误信息: node.js:284 throw new Error('process.stdout cannot be closed');


在我的情况下,细空格(\u200B)实际上被输出为Γò¼├┤Γö£├ºΓö£┬╗(在控制台和文件重定向中),而不是盒子。解决方法没有起作用。你遇到过这种情况吗? - coding_idiot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接