js encodeURIComponent

UTF-8 escape-последовательность выглядит так:

\u043f\u043e \u0440\u0443\u0441\u0441\u043a\u0438

encodeURIComponent

EncodeURIComponent изменяет все символы, за исключением следующих: латинские буквы, десятичные цифры, - _ . ! ~ * ' ( ) в UTF-8 escape-последовательность.

Тут нюанс : символ ' нельзя записывать в базу mysql в исходном виде , его надо заменять на html спец. символ ' или как минимум экранировать на такой вариант \'

URL-encoded это примерно нечто такое:

UTF-8 escape-последовательность выглядит так:

\u043f\u043e \u0440\u0443\u0441\u0441\u043a\u0438

encodeURIComponent

EncodeURIComponent изменяет все символы, за исключением следующих: латинские буквы, десятичные цифры, - _ . ! ~ * ' ( ) в UTF-8 escape-последовательность.

Тут нюанс : символ ' нельзя записывать в базу mysql в исходном виде , его надо заменять на html спец. символ ' или как минимум экранировать на такой вариант \'

URL-encoded

URL-encoded это примерно нечто такое:

%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D1%8F%D0%B5%D1%82%20%D0%B2%D1%81%D0%B5%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B%2C%20%D0%B7%D0

Тут на самом деле все просто - на один символ 3 знака , % всегда первый , далее 2 и 3 знак это представление HEX байта ( %20 пробел и т.д.), то ест это просто представление шестнадцатеричных данных, не зависимо от каких бы то ни было кодировок. по сути это просто бинарные данные.