阅读量:119
在C++中进行urlencode时,可以使用标准库中的一些函数来避免乱码。例如,可以使用std::string和std::stringstream来构建和处理URL编码字符串。以下是一个示例代码:
#include
#include
#include
#include
std::string urlencode(const std::string &s) {
std::ostringstream escaped;
escaped.fill('0');
escaped << std class="hljs-keyword">for (auto c : s) {
if (isalnum(c) || c == '-' || c == '_' || c == '.' || c == '~') {
escaped << c class="hljs-keyword">else if (c == ' ') {
escaped << '+';
} else {
escaped << '%' << std class="hljs-built_in">setw(2) << int((unsigned char)c);
}
}
return escaped.str();
}
int main() {
std::string input = "Hello, 世界";
std::string encoded = urlencode(input);
std::cout << "Encoded string: " << encoded class="hljs-keyword">return 0;
}
在上面的代码中,urlencode函数将输入的字符串进行URL编码,并返回编码后的字符串。通过使用std::ostringstream和std::hex,可以确保输出的URL编码字符串不会出现乱码。当然,还需要根据具体需求对特殊字符进行处理,确保生成的URL编码字符串符合标准。