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();
    });
}
  • Кстати, если есть возможность — то это можно в настройках БД указать или в ~/my.cnf.

  • Пиндес я полдня провозился с кодировками. Спасибо большое за статью, очень помогла.

  • Прям моя проблема с ываывÐ
    До чего приятно видеть то же самое!!