当前位置: 首页 > 面试题库 >

使用请求进行nodejs编码

姬振濂
2023-03-14
问题内容

我正在尝试使用请求获取正确的编码。

request.get({
    "uri":'http://www.bold.dk/tv/',
    "encoding": "text/html;charset='charset=utf-8'"
  },
  function(err, resp, body){    
    console.log(body);
  }
);

不管我做什么,丹麦字符的编码都不对。

有什么想法吗?


问题答案:

也许您的麻烦在于'Accept-Encoding'标题。假设您的标题为'Accept-Encoding': 'gzip,deflate'

如果是这样,您有2种方法可以解决此问题:

  1. 删除此标题
  2. 使用以下代码解压缩数据:
    const req = request(options, res => {
    let buffers = []
    let bufferLength = 0
    let strings = []
    
    const getData = chunk => {
        if (!Buffer.isBuffer(chunk)) {
            strings.push(chunk)
        } else if (chunk.length) {
            bufferLength += chunk.length
            buffers.push(chunk)
        }
    }
    
    const endData = () => {
        let response = {code: 200, body: ''}
        if (bufferLength) {
            response.body = Buffer.concat(buffers, bufferLength)
            if (options.encoding !== null) {
                response.body = response.body.toString(options.encoding)
            }
            buffers = []
            bufferLength = 0
        } else if (strings.length) {
            if (options.encoding === 'utf8' && strings[0].length > 0 && strings[0][0] === '\uFEFF') {
                strings[0] = strings[0].substring(1)
            }
            response.body = strings.join('')
        }
        console.log('response', response)
    };
    
    switch (res.headers['content-encoding']) {
        // or, just use zlib.createUnzip() to handle both cases
        case 'gzip':
            res.pipe(zlib.createGunzip())
                .on('data', getData)
                .on('end', endData)
            break;
        case 'deflate':
            res.pipe(zlib.createInflate())
                .on('data', getData)
                .on('end', endData)
            break;
        default:
            res.pipe(zlib.createInflate())
                .on('data', getData)
                .on('end', endData)
            break;
    }
    

    });



 类似资料:
  • 本文向大家介绍nodejs使用socket5进行代理请求的实现,包括了nodejs使用socket5进行代理请求的实现的使用技巧和注意事项,需要的朋友参考一下 需要用到2个库, request socks5-http-client/lib/Agent/ 或 socks5-https-client/lib/Agent 因为一些已知原因,有时候,http.request请求无法拿到数据, 首先想到的是

  • 嗨,有人能帮我吗。 如何请求soapweb服务并获取xml响应。Senario:使用SOAPUIIM发送带有用户名、密码身份验证的wsdl url,我还将发送SOAPXML数据并获得响应。如何使用nodejs或sails实现同样的目标。 在SoapUi中,我的soapxml请求如下 我的Soap身份验证就像 $UserName:xyz 我的wsdl url是http://esbuatt1wm.it

  • 我试图通过参数在谷歌搜索,它的工作,当我搜索一个词,但一个我做空间它坏了我知道有一种方法来编码网址。 回溯: 还有一次,我用希伯来文写道: UnicodeEncodeError:“ascii”编解码器无法对位置14-18中的字符进行编码:序号不在范围内(128)

  • 本文向大家介绍如何使用nodejs对base64进行编解码?相关面试题,主要包含被问及如何使用nodejs对base64进行编解码?时的应答技巧和注意事项,需要的朋友参考一下 轮子, https://www.npmjs.com/package/js-base64

  • 问题内容: 我正在尝试在 Linux(Ubuntu)中 使用c编程来接收和发送arp数据包。 我的程序运行正常(即运行无任何错误),但是我无法使用Wireshark跟踪数据包。 源代码 : 问题答案: 有几件事情可以使您的数据包通过有线/空中传输。 适用于arp回复的.sll_protocol是ETH_P_ARP,来自 设置ah-> arp_op时,字节序错误。它是2个字节的网络字节序字段,因此请

  • 问题内容: 我想用以下代码用jquery ajax解析JSON数组数据: 我的JSON数据是: 但是我没有任何输出…任何人请帮忙… 问题答案: 概念解释 您是否正在尝试进行跨域AJAX调用?意思是,您的服务不在同一Web应用程序路径中托管吗?您的Web服务必须支持方法注入才能执行JSONP。 您的代码看起来不错,并且如果您的Web服务和Web应用程序托管在同一域中,则该代码应该可以正常工作。 当您