我正在针对Web服务执行以下请求(使用请求/请求):
return request.postAsync({
url,
charset: 'Cp1252', // I also tried utf-8
encoding: null, //
// I also tried Cp1252 -> unknown encoding,
// I also tried utf-8 and nothing at all
headers: {
"Accept": "application/octet-stream, text, text/plain, text/xml",
"Accept-Encoding": "UTF-8",
'Content-Type': "text/plain; charset=Cp1252;", // also tried utf-8, ISO-8859-1
"User-Agent": "me"
}
}).spread((res, body) => {
body = body.toString(); // I also tried without toString();
let ws = fs.createWriteStream('hhh.csv');
ws.write(body);
ws.end();
Run Code Online (Sandbox Code Playgroud)
无论我做什么,变形金刚都变成了?.
这些是Web服务发回的标头:
'content-type': 'text; charset=Cp1252',
'content-length': '1895980',
vary: …Run Code Online (Sandbox Code Playgroud) 我即将写一个RSS-feed fetcher并遇到一些charset问题.
与编码相比,加载和解析订阅源非常简单.我正在加载Feed,http.get我将每个数据事件放在一起.后来我用npm-lib解析整个字符串,feedparser它对给定的字符串工作正常.
可悲的是我已经习惯了像utf8_encode()php 这样的函数,我在node.js中错过了它们,所以我坚持使用当前没有做我想要的Iconv.
没有编码,有几个utf8?-icons用于错误的字符集,用iconv,字符串被解析错误:/
目前我正在单独编码每个字符串:
//var encoding ? ISO-8859-1 etc. (Is the right one, checked with docs etc.)
// Shortend version
var iconv = new Iconv(encoding, 'UTF-8');
parser.on('article', function(article){
var object = {
title : iconv.convert(article.title).toString('UTF-8'),
description : iconv.convert(article.summary).toString('UTF-8')
}
Articles.push(object);
});
Run Code Online (Sandbox Code Playgroud)
我应该使用数据缓冲区开始编码还是稍后使用完整的字符串?
谢谢!
PS:编码是通过解析xml的头来确定的
如何在node.js中进行编码的模块更容易?
该页面说明了node.js支持的编码:here或here。许多流行的(或一段时间前流行的)编码都丢失了,例如Windows-1252。
我想获取Windows-1252中的网页并解析响应,最后将其保存到文件中。我在编码时遇到问题。我已经做了很多不同的尝试,但我的头脑却发疯了:(
因此,我知道node.js中有iconv和iconv-lite模块比node.js支持更多的编码。我想使用iconv-lite,因为我无法iconv在公司机器上编译所需的内容。反正我有
var iconv = require('iconv-lite');
Run Code Online (Sandbox Code Playgroud)
现在,困难的部分-获取响应。如我所写,我的资源位于网络中的某个位置,因此我需要触发HTTP请求。我一直在试图节点的wget(NPM:wget模块)http.request,http.get并且所有这些尝试都失败了。
我也用谷歌搜索,最接近我需要的解决方案似乎是使用request / /sf/answers/1541954991/进行的nodejs编码,但是作者没有写出到底是request什么-它是一个节点模块?他如何加载它?
我还阅读了https://groups.google.com/forum/#!topic/nodejs/smA6-jGq2pw,但是那里没有干净的解决方案。
我希望能用最少的代码集来获取Web文档并将其即时地从windows-1252编码转换为UTF-8。唯一的参数是文档的URL。