socket.io на серверной части проблемы с кодировкой

  1. OS: windows
  2. IDE: PhpStorm

Помогите пожалуйста решить проблему с кодировкой. На стороне клиента проблем нет, если вывести в консоль передаваемый username и room, все отображается корректно, но в терминале сервера белиберда. Сам файл server.js в формате UTF-8. Причем такое поведение только в событии joinRoom в файле server.js, в событии chatMessage кириллица обрабатывается правильно. Почему такое происходит(ниже пояснение в комментариях)?

{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node server",
    "dev": "nodemon server"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",
    "socket.io": "^2.3.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.4"
  }
}

chat.html в него подключен main.js

<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

main.js - Клиент

var username = 'Андрей';
var room = 'it-dept';

const chatForm = document.getElementById('chat-form');
const socket = io.connect("http://localhost:3000");

//Join chatRoom
socket.emit('joinRoom',{username,room});
console.log(username,room);// вывод: Андрей it-dept



//Message submit
chatForm.addEventListener('submit',(e)=>{
    e.preventDefault();
    //get message text
    const msg = e.target.elements.msg.value;

    //Emitting message to server
    socket.emit('chatMessage',msg);

});


вывод в консоль браузера: Андрей it-dept

server.js

io.on('connection', socket => {

    console.log('New Client connected...' + socket.id);

    socket.on('joinRoom', ({username, room}) => {
        console.log('Подсоединился:',username); //Вывод: Подсоединился: Ð Ð½Ð´Ñ ÐµÐ¹
        const user = userJoin(socket.id, username, room); //pushes connected  users in array 
        socket.join(user.room);
    });


    socket.on('chatMessage', (msg) => {
        const user = getCurrentUser(socket.id);//returns users data by socket.id 

      //sending message to cliens for output to DOM  
      io.to(user.room).emit('message', formatMessage(user.username, msg));

        console.log(user.username,user.room,msg); //причем тут нормально все, вывод: корректный, кириллица отображается правильно
    });
});

package.json

{
  "name": "node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node server",
    "dev": "nodemon server"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "express": "^4.17.1",
    "moment": "^2.29.1",
    "socket.io": "^2.3.0"
  },
  "devDependencies": {
    "nodemon": "^2.0.4"
  }
}

Ответы (1 шт):

Автор решения: Andrew Medvedev

В результате все оказалось просто. На клиентской части использовал версию

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.js" charset="utf-8"></script>

Изменил на

  <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.1/socket.io.slim.min.js" integrity="sha512-tj7TsH/mhgmfzJFXDAyYrVZbGz1tjT6/eglLxP5S7wvHz4XkTWqST0Ldx+oEWyre43PU0hlncsxCh+1u81QW9A==" crossorigin="anonymous"></script>
→ Ссылка