我真的很想知道Web服务器如何将URL UTF-8编码字符转换为Unicode。他们如何解决诸如重复的URL编码和非最短形式的utf-8代码转换等问题,以便在此处解释。
例如:http://www.example.com/dir1/index.html?name=%D8%A7%D9%84%D8%A7%D8%B3%D9%85%D8%A7
自http://www.example.com/dir1/index.html?name=الاسما
我写了一个 c++ 程序来执行这种转换,但总的来说,我想知道像 apache 或 nginx 这样的 Web 服务器是如何做到这一点的。
你的意思是做这样的事情:
发件人 - 对C++中的 URL 进行编码/解码
#include <string>
#include <iostream>
using std::string;
using std::cout;
using std::cin;
string urlDecode(string &SRC) {
string ret;
char ch;
int i, ii;
for (i=0; i<SRC.length(); i++) {
if (int(SRC[i])=='%') {
sscanf(SRC.substr(i+1,2).c_str(), "%x", &ii);
ch=static_cast<char>(ii);
ret+=ch;
i=i+2;
} else {
ret+=SRC[i];
}
}
return (ret);
}
int main()
{
string s = "http://www.example.com/dir1/index.html?name=%D8%A7%D9%84%D8%A7%D8%B3%D9%85%D8%A7";
cout << urlDecode(s);
}