Sequelize MariaDB - 插入表情符号字符

时间:2016-11-29 04:50:24

标签: mysql node.js sequelize.js mariadb utf

我正在开发一个电报机器人。一切都很好,除了unicode角色(表情符号)。我的意思是,当我在表格中插入内容时,如果有表情符号,它总是会显示问号。 (我认为桌子不承认这个角色)。 enter image description here

我对数据库和表做了一些更改,我将一些配置转换为utf8mb4,这里是reference link

这是表格设置

enter image description here

我做了修复优化表。

这是我的续集模型

enter image description here

我需要这个,因为当我从数据库中检索数据时,它会在我将它传递给房间聊天时显示表情符号(而不是问号事物

谢谢你们! 任何帮助将不胜感激

修改

我在sequelize.js的选项上添加了2行,但仍然没有发生

enter image description here

3 个答案:

答案 0 :(得分:1)

连接到db时,添加charset选项。

var sequelize = new Sequelize('database', 'username', 'password', {
  host: 'localhost',
  dialect: 'mysql', //maybe modify this to mariadb
    dialectOptions: {
      charset: 'utf8mb4'
    },
});

答案 1 :(得分:0)

你还可以在表定义上添加charset以在该表中启用表情符号字符支持,同时定义表add char set this

GetEditableModel()

答案 2 :(得分:0)

我找到的解决方案是将以下内容放在用户模型的第一行:

 filter {
      if "iis" in [tags] {
        grok {
          match => { "message" => "%{TIMESTAMP_ISO8601:log_timestamp} %{WORD:S-SiteName} %{WORD:S-ComputerName} %{IPORHOST:S-IP} %{WORD:CS-Method} %{URIPATH:CS-URI-Stem} %{NOTSPACE:CS-URI-QUERY} %{NUMBER:S-Port}$ %{NUMBER:SC-Win32-Status} %{NUMBER:SC-Bytes} %{NUMBER:CS-Bytes} %{NUMBER:Time-Taken}"}
        }
      }
    if "nx" in [tags] {
        grok {
          match => { "message" => "\[%{TIMESTAMP_ISO8601:log_timestamp}\] (?<LogLevel>\[\w+\s*\]) (?<thread>\[\s*\d*\]) (?<snName>\[\w*\]) (?<snId>\[\d*\s*\d*\]) %{GREEDYDATA:message}"}
        }
      }
    }