Hey, ruX is here.

nodejs: mysql-libmysqlclient и русские буквы

При работе с библиотекой mysql для ноды(уверен это будет с любой либой) возникает маленькая проблемка - ываывÐ. Это всё из-за кодировки в которой по умолчанию работает сервер базы данных.

Как исправить?

Предлагаю для начала проверить какая кодировка сейчас используется:

> conn.getCharsetSync()
{ charset: 'latin1',
collation: 'latin1_swedish_ci',
dir: '',
min_length: 1,
max_length: 1,
number: 8,
state: 801,
comment: 'cp1252 West European' }
> conn.getCharsetNameSync()
'latin1'

Ну и установить то, что хочется нам:

> conn.setCharsetSync("utf8");
true
conn.query("insert into txt (t) values('раздватри')");

После этого проблем с абракадаброй нет:

Вместе с установкой соединения

Кусочек кода, устанавливающий соединение с БД из geoChat:

this.dbconn = this.mysql.createConnectionSync();
this.dbconn.connectSync(this.config.mysql.host, this.config.mysql.user,
this.config.mysql.pass, this.config.mysql.base);

if (!this.dbconn.connectedSync()) {
console.log(" MySQL connection error " + this.dbconn.connectErrno + ": " + this.dbconn.connectError);
process.exit(1);
} else {
this.dbconn.setCharsetSync("utf8");
console.log(" MySQL connection successful");
process.on('exit', function () {
gc.dbconn.closeSync();
});
}

Exit mobile version