Obtengo un comportamiento muy extraño que no entiendo al usar JavaScript para dividir y unir. Estoy enviando nombres con espacios en una llamada a la API pero usando %3 como delimitador de espacios, por ejemplo, si estoy enviando "Ammar Ahmed" , la llamada a la API se vería así: api/v1?q=Ammar%3Ahmed . En el código del servidor, cuando lo divido de nuevo con q.split("%3").join(" ") porque la base de datos contiene nombres con espacios, para un nombre en particular: "Ashwini Bettahalsoor" , obtengo "Ashwini;ettahalsoor" . Estoy muy confundido por qué está haciendo esto, lo está dividiendo, incluida la B, y uniéndolo con a; pero funciona perfectamente normal para todos los nombres que el apellido no comience con B. Estoy seguro de que tiene algo que ver con la letra B, pero en primer lugar tengo curiosidad por saber por qué sucede esto y en segundo lugar, yo Me pregunto qué debo usar en lugar de %3 para los espacios en la llamada a la API.
%3 no es la codificación correcta para un espacio. Estás recibiendo ; porque %3B es la codificación de ese carácter. La codificación URI siempre usa 2 dígitos hexadecimales.
Debe usar encodeURICompnent() para generar la codificación correcta.
let url = 'api/v1?q=' + encodeURIComponent('Ashwini Bettahalsoor'); Y en el servidor, debe usar un middleware que decodifique los parámetros de consulta por usted, en lugar de usar split() y join() explícitamente.