Urlencoding另一个charset中的怪异角色

时间:2014-09-30 14:30:19

标签: c encoding character-encoding libcurl iso

我正在学习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?

1 个答案:

答案 0 :(得分:1)

使用非UTF-8编码进行POST是一个完全混乱的行为,浏览器之间的行为实际上有所不同,所以这被认为是非常糟糕的做法。但是,既然你已经被一个网站所困,那你就必须解决它。

我找不到使用备用字符集进行百分比编码的curl api,因此您可能必须自己动手(首先使用iconv转换系统的原生编码,希望是UTF -8,到ISO-8859-1(Latin-1),然后手动进行百分比编码。

一个想法 - 你确定你应该自己逃避吗?我的印象是,它只适用于URL,而POST表单的curl API可能已经在内部进行转义(不确定),在这种情况下,您可能只需要告诉它正确的内容类型。