在 Web 服务器中 utf-8 和 unicode 之间进行转换



我真的很想知道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);
}

最新更新