readlineSync.question读取用户输入乱码

跟标题一样调用readlineSync.question如果用户输入的是中文的话,会得到一个乱码的字符。
readlineSync.question用中文提问也会是乱码,配置了参数encoding:'utf8'也没用
怎么解决呢

追加提问

Snipaste_2020-04-09_22-13-59.png

  1. 为什么A1之前会有你好1...输出?输出两次有点奇怪
  2. 为什么你好3不会被执行呢?异步一多,就有点绕了
阅读 5.5k
1 个回答
✓ 已被采纳

readline-sync 好像是说有处理中文的问题,如果用 chcp 65001 都没用,那就用原生的 readline 吧,稍微封装一下

const readline = require("readline");

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

function rlPromisify(fn) {
    return async (...args) => {
        return new Promise(resolve => fn(...args, resolve));
    };
}

const question = rlPromisify(rl.question.bind(rl));
(async () => {
    const answer = await question("你好,你是谁:");
    console.log(`你是:${answer}`);
    rl.close();
})();

overload-interface.gif

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题