readline-sync 在 Windows 上没有使用正确的编码

wul*_*lxz 5 javascript encoding node.js

我正在使用readline-sync向我的 noedejs 命令行应用程序的用户询问一些信息。
在我的 linux 终端中,德语变音 (öäü) 一切正常,但是在 Windows shell(powershell 或 cmd)上读取输入时,尽管已将编码设置为utf8

var rls = require('readline-sync');
// set encoding for rls:
rls.setDefaultOptions({encoding: 'utf8'});
Run Code Online (Sandbox Code Playgroud)

...

var test = rls.question("Input name: ");
console.log("Created: " + test);
Run Code Online (Sandbox Code Playgroud)

窗口输出:

PS > tim test
Input name: töst
Created: t?st
Run Code Online (Sandbox Code Playgroud)

我通过命令行参数传递给我的应用程序的参数将具有正确的字符也很有趣。

这是一个错误吗?我该如何解决?

Gia*_*021 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);
Run Code Online (Sandbox Code Playgroud)

对于像您这样的其他方法keyInSelect也可以使用此方法。