天天看點

http url轉義字元和特殊字元處理

根據這個博文,有這些轉義

http url轉義字元,特殊字元 - yutingliuyl - 部落格園

空格 - %20

" - %22

# - %23

% - %25

& - %26

( - %28

) - %29

+ - %2B

, - %2C

/ - %2F

: - %3A

; - %3B

< - %3C

= - %3D

> - %3E

?

- %3F

@ - %40

\ - %5C

| - %7C

根據ESP32的例程對轉義處理函數如下

void preprocess_string(char* str)

{

    char *p, *q;

    for (p = q = str; *p != 0; p++)

    {

        if (*(p) == '%' && *(p + 1) != 0 && *(p + 2) != 0)

        {

            // quoted hex

            uint8_t a;

            p++;//直接去掉%,處理第一個數字

            if (*p <= '9')

                a = *p - '0';

            else

                a = toupper((unsigned char)*p) - 'A' + 10;

            a <<= 4;

            p++;//第二個數字

            if (*p <= '9')

                a += *p - '0';

            else

                a += toupper((unsigned char)*p) - 'A' + 10;

            *q++ = a;

        }

        else if (*(p) == '+') {

            *q++ = ' ';//空格

        } else {

            *q++ = *p;//不變

        }

    }

    *q = '\0';

}