Home
Sign Up
Sign In
Advertisement
V2EX
›
Node.js
请问用 Node 的爬虫朋友,有遇到过偶然出现中文变成方块问号字符的情况吗?
wontoncc
·
May 19, 2013
· 7282 views
This topic created in 4921 days ago, the information mentioned may be changed or developed.
估计是变成坏掉的不完整的UTF-8字符了,求解决方案。
另外,估计不是编码问题,因为出现问题的字符是随机的,并不固定。
Supplement 1 ·
May 20, 2013
https://github.com/wontoncc/cnbetaCC
代码仓库在这边,主要是 worker 和 processor 做爬取信息的处理。
Supplement 2 ·
May 21, 2013
重新写了一遍抓取的代码,用 stream 和原生 buffer 处理,并没有出现这个问题;
估计是 bufferhelper 模块的问题:https://github.com/JacksonTian/bufferhelper
有点可笑的是,bufferhelper 这个模块本身就是为了防止 chunk 拼接的时候被阶段的问题…
我自己的处理方案是:
var buf = Buffer(0);
...
res.on('data', function(chunk){ ... buf = Buffer.concat([buf,chunk]); ... });
res.on('end', function(){ ... buf = Buffer(0); });
于是这贴可以结了,感谢各位的指教。
字符
估计
utf
15 replies
•
1970-01-01 08:00:00 +08:00
chemzqm
May 19, 2013
1
1
可能抓到的是gzip版本,设置请求头 Accept-Encoding:deflate
wontoncc
OP
May 19, 2013
2
@
chemzqm
刚刚测试了一下,还是不行。会不会跟用了 iconv-lite 转码有关?
orzfly
May 19, 2013
1
3
随机的?话说js好像不支持0~0xFFFF之外的字符。
inaction
May 19, 2013 via Android
1
4
@
wontoncc
对,有些字符没对应,比如 []
inaction
May 19, 2013
5
测试:刚才明明发的中文字符:〖〗,变成了[]
skydiver
May 19, 2013
6
@
inaction
v2ex确实会转化这个字符。。。不知是不是L大不喜欢这个符号。。。
wontoncc
OP
May 19, 2013
7
@
inaction
@
orzfly
那请问还有什么处理GBK的方法?
juicy
May 20, 2013
1
8
会不会是你本机缺少相应的字符库,而抓到的数据本身是没问题的?也许在其他有相应字符库的机子上是显示正常的?
wontoncc
OP
May 20, 2013
9
@
juicy
刚刚测试了一下,并不是这个问题。
而且因为是随机的缘故,本来有些字这次请求完好,下一次请求却坏到了。如果是字库问题应该一直都看不到才对。
juicy
May 20, 2013
10
@
wontoncc
那会不会是源头就是坏的呢。。。没准用别的语言爬也是这样的结果。。
leafduo
May 20, 2013
1
11
贴代码吧
wontoncc
OP
May 20, 2013
12
@
leafduo
已经附上了。
wontoncc
OP
May 21, 2013
13
@
chemzqm
@
orzfly
@
inaction
@
juicy
@
leafduo
非常感谢各位,问题已经解决了。请见 APPEND。
juicy
May 21, 2013
14
恭喜楼主攻克难题~~~
chemzqm
May 21, 2013
15
给他提个issue吧,方便其他人。
About
·
Help
·
Advertise
·
Blog
·
API
·
FAQ
·
Privacy
·
Solana
·
541 Online
Highest 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms ·
UTC 22:24
·
PVG 06:24
·
LAX 14:24
·
JFK 17:24
♥ Do have faith in what you're doing.
❯