我在使用tis-620以我的语言获取数据时遇到问题
[MySQL结构]
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数据]
[
{
"id" : 1,
"name" : "��ҹ.������",
"address" : "��ҹ������ �.� �.������"
}
]
我将在我的PHP项目中使用的JSON结果
答案 0 :(得分:0)
解决方案:
[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);
}
});