前提
ご覧いただきありがとうございます。
Node.jsでreadline-syncを使用したいのですが、コマンドプロントにてファイルを実行すると、テキストが以下のように文字化けしてしまいます。
なお、文字化けするのはコマンドプロント上で入力した日本語のみで、英語やconsole.logで出力したテキストは問題なく出力されます。
app.jsの実行結果
1蜷榊燕繧貞・蜉帙@縺ヲ縺上□縺輔>: ねこ cat // readlineSync.questionでの出力部分が文字化けしています 2Please enter your cats' age: 7 // 英語のテキストは文字化けしません 3 4~~~ About Your Cats ~~~ 5名前: �˂� cat // 日本語で入力した部分のみ文字化けします 6猫年齢: 7 歳 // console.logでの出力部分は日本語でも文字化けしません 7人間年齢: 44 歳
該当のファイルはこちらです。app.js内でcat.jsを読み込んで使用しています。
app.js
1'use strict'; 2const readlineSync = require('readline-sync'); 3const catClass = require('./cat'); 4const Cat = catClass.Cat; 5 6const name = readlineSync.question("名前を入力してください: "); 7const age = readlineSync.questionInt("Please enter your cats' age: "); 8const cat = new Cat(name, age, monthOfBirth); 9cat.info();
cat.js
1'use strict'; 2class Cat { 3 constructor(name, age) { 4 this.name = name; 5 this.age = age; 6 } 7 getHumanAge() { 8 if (this.age === 1) return 17; 9 if (this.age === 2) return 23; 10 if (this.age === 3) return 28; 11 let humanAge = 28; 12 for (let i = 4; i <= this.age; i++) { 13 humanAge += 4; 14 } 15 return humanAge; 16 } 17 info() { 18 console.log('\n~~~ About Your Cats ~~~'); 19 console.log(`名前: ${this.name}`); 20 console.log(`猫年齢: ${this.age} 歳`); 21 console.log(`人間年齢: ${this.getHumanAge()} 歳`); 22 } 23} 24 25module.exports = { Cat };
解決方法をご存じの方、お知恵をお貸しくださいますと幸いです。
試したこと
調べてみたところ「エンコードがutf-8に設定する」という解決方法を見つけましたが、私の場合はすでにutf-8に設定されています(画像の右下部分)。

補足情報(FW/ツールのバージョンなど)
作業環境: Windows11
エディタ: VSCode
Node.js: v16.14.2
CLI: GitBash, PowerShell (どちらも同じ出力結果になりました)
他にご入用の情報がございましたら、お手数ですが仰ってくださいませ。
何とぞよろしくお願いいたします。

0 コメント