De acordo com esta resposta aqui : str='foo%20%5B12%5D'
codifica foo [12]
:
%20 is space
%5B is '['
and %5D is ']'
Isso é chamado de porcentagem de codificação e é usado na codificação de caracteres especiais nos valores dos parâmetros de url.
EDIT Pela maneira como eu estava lendo https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURI#Description , me ocorreu por que tantas pessoas fazem a mesma pesquisa. Veja a nota na parte inferior da página:
Observe também que, se desejar seguir o RFC3986 mais recente
para URLs, deixando colchetes reservados (para IPv6) e, portanto, não codificados ao formar algo que possa fazer parte de um URL (como um host), o seguinte pode ajudar.
function fixedEncodeURI (str) {
return encodeURI(str).replace(/%5B/g, '[').replace(/%5D/g, ']');
}
Espero que isso ajude as pessoas a resolver seus problemas quando se depararem com essa pergunta.