我已经构建了一个小脚本,允许我从Google搜索API中获取关键字建议。
主要问题是,如果响应包含特殊字符(如àéú等):我的应用程序返回无法读取的关键字,如:ï?½,ï??½a,a va,﮽majuscule,ï°½a marche,ï½,ï
这是我的Node.js脚本:
var express = require('express');
var request = require('request');
var app = express();
app.get('/sug', function (req, res) {
var KW = req.query.KW ;
console.time("Délai");
var url = "http://clients1.google.fr/complete/search?hl=fr&q=" + KW + "&json=t&client=hp";
request(url, function (err, resp, body) {
body = JSON.parse(body);
res.end(body.toString());
console.timeEnd("Délai");
});
});
app.listen(1337);
console.log('Serveur : OK');
打电话很容易,只需打字http://localhost:1337/sug?KW=ç。
你知道如何解决这个问题并使utf-8工作吗?
正如vmkcom所说,因为响应使用ISO-8859-1,所以必须手动转换为utf-8。iconv
包可以帮助您:
var request = require('request');
var iconv = require('iconv');
var KW = 'ç' ;
console.time("Délai");
var url = "http://clients1.google.fr/complete/search?hl=fr&q=" + KW + "&json=t&client=hp";
var options = {
url: url,
encoding: null // << set encoding to null so request don't try to force utf-8
};
var ic = new iconv.Iconv('iso-8859-1', 'utf-8');
request(options, function (err, resp, body) {
// body is a Buffer not a string, convert to utf-8 buffer then to utf-8 string
body = ic.convert(body).toString('utf-8');
console.log(body);
console.timeEnd("Délai");
});
感谢您的帮助。所以我用你的反馈做了这个代码:
var express = require('express');
var request = require('request');
var iconv = require('iconv');
var app = express();
app.listen(1337);
console.log('Serveur : OK');
app.get('/sug', function (req, res) {
var KW = req.query.KW;
console.time("Délai");
var url = "http://clients1.google.fr/complete/search?hl=fr&q=" + KW + "&json=t&client=hp";
var options = {
url: url,
encoding: null // << set encoding to null so request don't try to force utf-8
};
var ic = new iconv.Iconv('iso-8859-1', 'utf-8');
request(options, function (err, resp, body) {
res.set({ 'content-type': 'application/json; charset=utf-8' });
body = ic.convert(body).toString('utf-8');
body = JSON.parse(body);
res.end(body.toString());
console.timeEnd("Délai");
});
});
它工作得很好!
http://localhost:1337/sug?KW=%C3%A7a
ça,ça、ça-va、çaMarche、ça y est、çaffilm、çailestrevenu、çadesoi、çateva、ça‘est bien passé、çam'éneural、〔object object〕
响应集
response.set({"content-type":"application/json;charset=utf-8"});
app.use('/reverse',函数(重新请求,响应){request.get({url:url,json:true,headers:{"User-Agent":"request"}},(err,res,data)=>{if(err){console.log('错误:',错误);}否则如果(res.statusCode!==200){
response.end(JSON.stringify({status : 'error'}));
} else {
response.set({ 'content-type': 'application/json; charset=utf-8' });
response.end(JSON.stringify({status : 'ok','api' : 'website : https://homeandroid.ir','json':data}));
}
});
});