gpt4 book ai didi

curl - 编码 'utf-8' 的编码序列无效

转载 作者:行者123 更新时间:2023-12-01 11:50:09 24 4
gpt4 key购买 nike

我正在使用 std.net.curl从删除网页中获取 HTML 的模块。但是我在编码方面遇到了一些问题,我不知道如何解决。某些页面,如 facebook.com 我收到以下错误消息(运行时):

std.net.curl.CurlException@/usr/include/d/dmd/phobos/std/net/curl.d(800): Invalid encoding sequence for enconding 'utf-8'
----------------
./foo(char[] std.net.curl._decodeContent!(char)._decodeContent(ubyte[], immutable(char)[])+0xf6) [0x812e6ba]
./foo(char[] std.net.curl._basicHTTP!(char)._basicHTTP(const(char)[], const(void)[], std.net.curl.HTTP)+0x28e) [0x80f89f6]
./foo(char[] std.net.curl.get!(std.net.curl.HTTP, char).get(const(char)[], std.net.curl.HTTP)+0x8f) [0x80f8737]
./foo(immutable(char)[] teste.get_html(immutable(char)[])+0x112) [0x80f0806]
./foo(_Dmain+0x5f) [0x80f06e3]
./foo(extern (C) int rt.dmain2.main(int, char**).void runMain()+0x14) [0x8138340]
./foo(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x18) [0x8137e50]
./foo(extern (C) int rt.dmain2.main(int, char**).void runAll()+0x32) [0x8138382]
./foo(extern (C) int rt.dmain2.main(int, char**).void tryExec(scope void delegate())+0x18) [0x8137e50]
./foo(main+0x94) [0x8137e04]
/lib/libc.so.6(__libc_start_main+0xf3) [0xb7593003]

对于 google.com,我得到(我得到二进制文件了吗?怎么得到的?)

�S��7�砱�y�����g�d��C���|��W��O�s��~����*6��@�4�&�A�J����r▒4=�FT�e�� [...]

对于 dlang.org 它工作正常。

问题是:正确的读法是什么?独立于页面编码。

这是我的 D 代码:

string get_html(string page) {
auto client = HTTP();
client.clearRequestHeaders();
client.addRequestHeader("DNA", "1");
client.addRequestHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
client.addRequestHeader("Accept-Encoding", "gzip, deflate");
client.addRequestHeader("User-Agent", "Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1");
client.addRequestHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");

return cast(string)get(page, client);
}

提前致谢。

最佳答案

cast(string)get(page, client) 对任何非 UTF-8 序列都失败。

使用独立的getpost 函数,这些函数根据服务器发送的 header 解码内容并返回有效的UTF-8 .

关于curl - 编码 'utf-8' 的编码序列无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11977809/

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