【发布时间】:2019-08-14 09:39:49
【问题描述】:
我正在开发一个通过命令行接受用户输入的项目。我正在使用最新的 Windows 10 并且(经过多次转圈......)我知道在处理 UTF-8 字符时它是出了名的糟糕。因此,我使用 VS Code 和集成终端 (PowerShell) 来执行程序的输入。遗憾的是,终端似乎无法接受重音 UTF-8 字符,例如“ë”。然后我做了更多的研究,并将 VS Code 的 settings.json 配置为 UTF-8 BOM 编码。尽管如此,终端还是无法读取重音字符。我确信我的程序不是问题,我的字体也不是。我已经将我的代码简化为一个测试算法,它只使用 readline-sync(开发人员确认它与 UTF-8 兼容:https://github.com/anseki/readline-sync/issues/58)和“console.log”来接受输入。
我一直在使用的测试用例是“你好”。当我在 VS Code 终端中输入“你好”时,我的程序会输出“你好”。当我尝试使用 Windows 10 的管理语言设置将我的所有应用程序转换为 UTF-8 编码并随后通过命令终端输入“Hëllo”时,它输出“Hllo”。我还尝试强制 CMD 使用 Code Page 65001 和 chcp 65001 进行 UTF-8 编码,但它仍然产生“Hllo”。
这是我用来通过 settings.json 配置 VS Code PowerShell 终端的代码:
{
"[powershell]": {
"files.encoding": "utf8bom",
"files.autoGuessEncoding": true
}
}
这是我编写的简短代码,用于测试我的输入/输出以及“ë”是否被成功读取(不是):
const rlSync = require('readline-sync');
const name = rlSync.question('Enter Player 1 Username (Case Sensitive): ');
console.log(name);
如果大家发现任何问题,请告诉我!
我正在寻找任何方法来正确配置我的 CLI 以接受重音字符以在我的程序中使用。我并不是要将这个问题限制在 VS Code 或 Powershell 上。如果有一种方法可以使用基本的 Windows 10 CMD 完成此操作,我会喜欢的。感谢您提供的任何帮助!
【问题讨论】:
标签: node.js cmd utf-8 visual-studio-code character-encoding