node.js - 如何配置终端以读取 UTF-8 字符?
问题描述
我正在开发一个通过命令行接受用户输入的项目。我正在使用最新的 Windows 10 并且(在绕了很多圈之后......)我知道在处理 UTF-8 字符时它是出了名的糟糕。因此,我使用 VS Code 和集成终端 (PowerShell) 来执行程序的输入。遗憾的是,终端似乎无法接受重音 UTF-8 字符,例如“ë”。然后我做了更多的研究,并将 VS Code 的 settings.json 配置为 UTF-8 BOM 编码。尽管如此,终端还是无法读取重音字符。我确信我的程序不是问题,我的字体也不是。我已将我的代码简化为一个测试算法,该算法仅使用 readline-sync 接受输入(开发人员确认它与 UTF-8 兼容:https://github.) 和“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 完成此操作,我会喜欢的。感谢您提供的任何帮助!<3
解决方案
您使用 VSCode 有什么特别的原因吗?我认为您正在寻找 System.Console InputEncoding / OutputEncoding - 不幸的是,我的默认编码仅适用于“Hëllo”,因此无法准确测试,我不知道这是否适用于 VSCode。
试试这个(一次一行)
# store current encoding settings
$i = [System.Console]::InputEncoding
$o = [System.Console]::OutputEncoding
# set encoding to UTF8
[System.Console]::InputEncoding = [System.Text.Encoding]::UTF8
[System.Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# test
"Hëllo"
# revert (if you want. if you don't want, I would at least note the default encoding)
[System.Console]::InputEncoding = $i
[System.Console]::OutputEncoding = $o
推荐阅读
- python - 数据从具有不受支持的浏览器错误的网站获取请求
- python - 运行本地 pip 安装时如何自定义复制到 tmp 目录的文件?
- swift - 如何替换字符串的一部分等等。斯威夫特 4
- azure - 如何通过 REST API 创建具有公共 IP 地址的 Azure VM
- amazon-web-services - 在 EC2 CentOS 实例中使用 IAM 身份验证
- javascript - 如何在带有长标签的强制布局 d3 中包装文本?
- google-app-engine - 带有受保护页面的 google-app-engine 静态站点示例
- excel - VBA:使用具有动态查找值的 VLOOKUP 公式
- android - Cordova - 路由在 React 应用程序中不起作用
- c++ - Qt OpenCV 应用程序无法在 Raspberry Pi 显示器上运行