Проблема с кодировкой в node.js + mssql + utf8
Помогите пожалуйста разобраться
Проблема: в Таблицу msql падает белиберда вот такая:
id sender receiver msg date
32 =4@59 >1 @825B <8@ 2020-10-07 13:20:28.883
31 =4@59 >1 @8<5B <8@ 2020-10-07 13:12:58.617
Разумеется если сделать INSERT в MSSQL Management Studio, то данные падают корректно.
Окружение: тестовое на openserver, Винда MSSQL 2008 R2
Есть вот такой javascript код:
var sql = require('mssql');
const config = {
user: 'username',
password: 'password',
server: '192.168.0.1',
database: 'dbname',
port: 1433,
"options": {
"encrypt": false,
"enableArithAbort": true
},
char_set: 'utf8'
};
var connection = new sql.ConnectionPool(config);
var req = new sql.Request(connection);
connection.connect(function (err) {
if(err){
// errors of connections if any
console.log('connection: ',err);
return;
}
var sender = 'Андрей';
var receiver = 'Боб';
var msg = "Какой то текст на русском";
req
.input('sender',sql.VarChar(20),sender)
.input('receiver',sql.VarChar(20),receiver)
.input('msg',sql.VarChar(20),msg)
.execute('chatTest',(err,result)=>{
if(err)
console.log(err)
else
console.log(result)
connection.close()
})
});
Таблица "dbname" SQL
CREATE TABLE [dbo].[dbname](
[id] [int] IDENTITY(1,1) NOT NULL,
[sender] [varchar](50) NOT NULL,
[receiver] [varchar](50) NOT NULL,
[msg] [text] NOT NULL,
[date] [datetime] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
Сама процедура "chatTest"
USE [dbname]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[chatTest]
@sender varchar(10),
@receiver varchar(10),
@msg TEXT
AS
INSERT INTO chat2 (sender,receiver,msg,date)
VALUES (@sender,@receiver,@msg,getdate())
Ответы (1 шт):
Автор решения: Andrew Medvedev
→ Ссылка
Проблему решил переводом типа строковых данных из varchar в nvarchar.