我正在尝试按语言从mysql数据库查询注释表。 每当我通过语言查询以获取中文注释时,它就会显示编码的乱码。但是每当我使用python查询时,它都可以工作。
Cloud Platform:Google Cloud SQL 数据库位置:Google Cloud SQL 编程语言:Nodejs
下面是我的代码
// Require process, so we can mock environment variables
const process = require('process');
const Knex = require('knex');
const express = require('express');
const app = express();
const config = {
user: process.env.SQL_USER,
password: process.env.SQL_PASSWORD,
database: process.env.SQL_DATABASE,
socketPath: `/cloudsql/${process.env.INSTANCE_CONNECTION_NAME}`
};
var knex = Knex({
client: 'mysql',
connection: config
});
app.get('/', (req, res) => {
knex.select('post')
.from('comment')
.where({
'language': 'zh'
}).limit(1).then((rows) => {
res.send(rows);
}).catch((err) => {
res.send(err);
});
});
这是我的查询结果:
“帖子”:“ ¢äººï¼“
请帮助.....
答案 0 :(得分:0)
“如果将“最白痴的部长基本的常识和逻辑都没有。真丢人”发送为编码为UTF-8,然后读取并解码为Windows-1252字符集,则会得到“。”
误解可能在几个不同的地方发生:
要进行调查,我建议保持系统性。首先使用其他工具访问数据,例如CloudShell中的PHPMyAdmin或mysql命令行。如果看到正确的数据,则说明问题是(4)或(5)。如果数据库中肯定有错误的数据,则为(1),(2)或(3)。
最常发生此错误的地方是(5),因此我将进一步介绍。这是因为网站经常将字符集设置为错误或完全错误。要解决此问题,我们必须使字符集明确。您可以在express.js中添加以下内容:
res.set('Content-Type', 'text/plain; charset=utf-8')