我试图通过语言从mysql数据库中查询一个注释表。每当我通过语言查询以获取中文注释时,它都会显示编码的胡乱字符。但是,每当我使用python查询时,它就能工作。
云平台: Google数据库位置: Google编程语言: 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);
});
});这是我的查询结果:
“帖子”:"æœ€ç™½ç—´çš„éƒ¨é•¿ï¼æœ€åŸºæœ¬çš„常识和逻辑都没有。真丢人3
请帮忙..。
发布于 2018-09-24 21:44:07
如果将“"æœ€ç™½ç—´çš„éƒ¨é•¿ï¼æœ€åŸºæœ¬çš„常识和逻辑都没有。真丢人4“编码为UTF-8,则文本最白痴的部长基本的常识和逻辑都没有.真丢人将被读取并解码为windows-1252字符集。
这种错误解码可能发生在几个不同的地方:
为了调查,我建议你要有系统。首先使用其他工具(例如PHPMyAdmin或Cloud中的mysql命令行)访问数据。如果您看到正确的数据,您知道问题是(4)或(5)。如果数据库中肯定有错误的数据,则为(1)、(2)或(3)。
这个错误发生的最常见的地方是(5),所以我将进一步讨论这个问题。这是因为通常网站会将字符集设置为错误,或者根本不出错。要解决这个问题,我们必须使字符集显式化。您可以在express.js中通过添加:
res.set('Content-Type', 'text/plain; charset=utf-8')https://stackoverflow.com/questions/52421771
复制相似问题