| 4648 | } |
| 4649 | |
| 4650 | String String::uri_encode() const { |
| 4651 | const CharString temp = utf8(); |
| 4652 | String res; |
| 4653 | |
| 4654 | for (int i = 0; i < temp.length(); ++i) { |
| 4655 | uint8_t ord = uint8_t(temp[i]); |
| 4656 | if (ord == '.' || ord == '-' || ord == '~' || is_ascii_identifier_char(ord)) { |
| 4657 | res += ord; |
| 4658 | } else { |
| 4659 | char p[4] = { '%', 0, 0, 0 }; |
| 4660 | p[1] = hex_char_table_upper[ord >> 4]; |
| 4661 | p[2] = hex_char_table_upper[ord & 0xF]; |
| 4662 | res += p; |
| 4663 | } |
| 4664 | } |
| 4665 | return res; |
| 4666 | } |
| 4667 | |
| 4668 | String String::uri_decode() const { |
| 4669 | CharString src = utf8(); |