我正在学习C,我正在使用libcURL发送POST请求以登录网站。
我遇到问题,我的密码包含ü
字符
从我的浏览器中读取POST请求,我可以看到它被编码为%FC
但是,使用curl_easy_escape()
对其进行编码时,它会编码为%C3%BC
。
我去搜索,发现它是一个不同的编码。我认为ISO,因为页面有这个元:<meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
但是,我无法弄清楚如何以某种方式转换它。
现在,我如何将ü
作为%FC
进行urlencoding?
答案 0 :(得分:1)
使用非UTF-8编码进行POST是一个完全混乱的行为,浏览器之间的行为实际上有所不同,所以这被认为是非常糟糕的做法。但是,既然你已经被一个网站所困,那你就必须解决它。
我找不到使用备用字符集进行百分比编码的curl api,因此您可能必须自己动手(首先使用iconv
转换系统的原生编码,希望是UTF -8,到ISO-8859-1(Latin-1),然后手动进行百分比编码。
一个想法 - 你确定你应该自己逃避吗?我的印象是,它只适用于URL,而POST表单的curl API可能已经在内部进行转义(不确定),在这种情况下,您可能只需要告诉它正确的内容类型。