Как ответить json TIS-620 на UTF-8 в Node js + Express (API) - PullRequest
0 голосов
/ 03 сентября 2018

У меня проблема с получением данных на моем языке с помощью tis-620

[MySQL Structure]

CREATE TABLE `foo` (
  `id` int(11) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `address` varchar(60) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=tis620

[Данные MySQL]

| id |   name   |    address    |
--------------------------------|
|  1 | ทดสอบ   | 6/12 บ้านแสนดี  |

[Функция NodeJS]

function getAllFoo() {
    return new Promise((resolve, reject) => {
        try {

            // Retrieving
            db.query("SELECT * FROM foo", (err, rows, fields) => {
                if(err) { throw err }
                resolve(rows)
            })

        } catch (error) {
            reject(error)
        }
    })
}

[NodeJS API]

const Foo = require('./foo')

app.get('/getFoo', (req, res) => {

    Foo.getAllFoo().then((rows) => {

         res.header("Content-Type", "application/json; charset=utf-8")
         res.status(200).json(rows)

     }).catch((err) => {
         throw err
     })

    res.status(200).json(rows);
})

Затем я пытаюсь запросить эту конечную точку /getFoo, но ответные данные: ҹ

[Ответ json data]

[
  {
    "id" : 1,
    "name" : "��ҹ.������",
    "address" : "��ҹ������ �.� �.������"
  }
]

Этот результат JSON, который я буду использовать с моим проектом PHP

1 Ответ

0 голосов
/ 06 сентября 2018

Решение:

[MySQL соединение] - в соединении mysql добавьте charset к tis620 и добавьте "SET NAMES UTF8" когда ваша база данных подключена

var mysql      = require('mysql');

var connection = mysql.createConnection({

  host     : 'example.org',
  user     : 'bob',
  password : 'secret'
  charset  : 'tis620'

})

connection.connect(function(err) {

  if (!err) {

    connection.query("SET NAMES UTF8")

    console.log('connected as id ' + connection.threadId);

  } else {     

    console.error('error connecting: ' + err.stack);        

  }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...