gpt4 book ai didi

node.js - Node JS。处理�字符编码

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:43 25 4
gpt4 key购买 nike

我在处理字符编码时遇到困难。我正在尝试抓取以下网址:

http://www.google.com/movies?near=Montreal&date=0

我的代码是这样的:

var http = require('http');
var url = require('url');
var Iconv = require('iconv').Iconv;

var location = 'montreal';

var googleMovies = url.parse("http://www.google.com/movies?near=" + location);

var req = http.request(googleMovies, function(response) {
var str = '';
response.on('data', function(chunk) {
str += chunk;
});
response.on('end', function() {

var iconv = new Iconv('latin1', 'UTF-8');
str = iconv.convert(str).toString();

console.log(str);
});
});
req.end()

我第一次尝试没有:

    var iconv = new Iconv('latin1', 'UTF-8');
str = iconv.convert(str).toString();

但那是导致 � 字符的原因。

我已经测试了此页面上面列出的源:

http://nlp.fi.muni.cz/projects/chared/

它似乎将其检测为 latin1,但事情可能是错误的。

最佳答案

� 个字符来自串联:

response.on('data', function(chunk) {
str += chunk;
});

这会将每个 chunk 转换为带有 default encoding of utf8String . Buffer 中任何无效的 UTF-8 序列都将丢失,并在此时由 � 替换。

convert() 之前,您需要将 chunk 保留为 Buffer。它们可以收集在 Array 中并与 Buffer.concat() 组合.

var chunks = [];

response.on('data', function (chunk) {
chunks.push(chunk);
});

response.on('end', function () {
var iconv = new Iconv('latin1', 'UTF-8');
var str = iconv.convert(Buffer.concat(chunks)).toString();
console.log(str);
});

关于node.js - Node JS。处理�字符编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com