我正在使用readline-sync向我的noedejs命令行应用程序的用户询问一些信息。
在我的linux终端中,一切都可以正常使用德语变音符号(öäü),但是当在Windows shell(PowerShell或cmd)上读取输入时,尽管已将编码设置为utf8
,但仍会输入我的输入:
var rls = require('readline-sync');
// set encoding for rls:
rls.setDefaultOptions({encoding: 'utf8'});
...
var test = rls.question("Input name: ");
console.log("Created: " + test);
Windows上的输出:
PS > tim test
Input name: töst
Created: t�st
我通过命令行args传递给我的应用程序的参数也会非常有趣。
这是一个错误吗?我该如何解决?
答案 0 :(得分:1)
我找不到使该模块从Windows终端正确读取重音符号的任何方法。但是我注意到默认模块readline没有这种类型的问题。
因此,我对方法question
进行了解决:
const readline = require('readline');
const question = question => {
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
return new Promise(resolve => {
rl.question(question, answer => {
rl.close();
return resolve(answer);
});
});
};
async function main() {
const answer = await question('Enter your text with accents: ');
console.log(answer);
}
main().catch(console.error);
对于其他方法,例如keyInSelect
,您也可以使用这种方法。