En resumen, HTML es un gran desastre (debido a su indulgencia), y el uso de punto y coma ayuda a simplificar mucho esto.Estimo que cuando tomo en cuenta las complicaciones que he encontrado, ¡el uso de ampersands como separador hace que el proceso sea tres veces más complicado que utilizar puntos y comas para separadores!
Soy un programador .NET y que yo sepa, .NET no no inherentemente permiten ';' separadores, así que escribí mis propios métodos de análisis y manejo porque vi un gran valor en el uso de puntos y comas en lugar del ya problemático sistema de usar los signos y símbolos como separadores. Desafortunadamente, las personas muy respetables (como @Bob Aman en otra respuesta) no ven el valor de por qué el uso de punto y coma es muy superior y mucho más simple que el uso de símbolos. Así que ahora comparto algunos puntos a tal persuadir a otros desarrolladores respetables que no reconocen el valor todavía de utilizar punto y coma en su lugar: '? A = 1 b = 2 &'
Usando una cadena de consulta como en una página HTML es inadecuada (sin HTML codificándolo primero), pero la mayoría de las veces funciona. Sin embargo, esto solo se debe a que la mayoría de los navegadores son tolerantes, y esa tolerancia puede provocar errores difíciles de encontrar cuando, por ejemplo, el valor del par de valores clave se publica en una URL de página HTML sin la codificación adecuada (directamente como '? a = 1 & b = 2 'en la fuente HTML). Un QueryString como '? Who = me + & + you' también es problemático.
Nosotros las personas podemos tener sesgos y podemos estar en desacuerdo sobre nuestros prejuicios durante todo el día, por lo que es muy importante reconocer nuestros prejuicios. Por ejemplo, estoy de acuerdo en que solo pienso en separarme con ';' se ve 'más limpio'. Estoy de acuerdo en que mi opinión "limpia" es puramente parcial. Y otro desarrollador puede tener un sesgo igualmente opuesto e igualmente válido. Entonces mi parcialidad en este punto no es más correcto que el sesgo opuesto.
Pero dado el apoyo imparcial del punto y coma que facilita la vida de todos a largo plazo, no se puede cuestionar correctamente cuando se tiene en cuenta la imagen completa. En resumen, el uso de punto y coma simplifica la vida de todos, con una excepción: un pequeño obstáculo para acostumbrarse a algo nuevo. Eso es todo. Siempre es más difícil hacer algo cambiar. Pero la dificultad de hacer el cambio palidece en comparación con la dificultad continua de continuar usando &.
Usando; como un separador QueryString lo hace MUCHO más simple. Los separadores Ampersand son más del doble de difíciles para codificar correctamente que si se utilizaran puntos y comas. (Creo) que la mayoría de las implementaciones no están codificadas correctamente, por lo que la mayoría de las implementaciones no son el doble de complicadas. Pero luego rastrear y corregir los errores conduce a una pérdida de productividad. Aquí, señalo 2 etapas de codificación separados necesarios para codificar adecuadamente una cadena de consulta cuando & es el separador:
- Paso 1: Codificar URL tanto las claves y valores de la cadena de consulta.
- Paso 2: concatenar los claves y valores como 'a = 1 & b = 2' después de que son URL codificada desde el paso 1.
- Paso 3: A continuación, HTML codifican toda la cadena de consulta en el código HTML de la página.
Por lo tanto, la codificación especial se debe realizar dos veces para una correcta codificación URL (libre de errores), y no solo eso, pero las codificaciones son dos tipos de codificación distintas y distintas. El primero es una codificación URL y el segundo es una codificación HTML (para código fuente HTML). Si alguno de estos es incorrecto, entonces puedo encontrar un error. Pero el paso 3 es diferente para XML. Para XML, en su lugar se necesita la codificación de entidad de caracteres XML (que es casi idéntica). Mi punto es que la última codificación depende del contexto de la URL, ya sea en una página web HTML o en documentación XML.
Ahora, con los separadores de punto y coma mucho más simples, el proceso es como una wud esperar:
- 1: URL codificar las claves y valores,
- 2: concatenar los valores. (Sin codificación para el paso 3.)
Creo que la mayoría de los desarrolladores web omiten el paso 3 porque los navegadores son muy indulgentes. Pero esto lleva a errores y más complicaciones al buscar esos errores o usuarios que no pueden hacer cosas si esos errores no estaban presentes, o escribir informes de errores, etc.
Otra complicación en el uso real es cuando se escribe el marcado de documentación XML en mi código fuente tanto en C# como en VB.NET. Como el & debe estar codificado, es una verdadera resistencia, literalmente, a mi productividad. Ese paso 3 adicional hace que sea más difícil leer el código fuente también. Por lo tanto, este déficit más difícil de leer se aplica no solo a HTML y XML, sino también a otras aplicaciones como C# y código VB.NET porque su documentación utiliza documentación XML. Por lo tanto, la complicación de codificación del paso n. ° 3 también prolifera en otras aplicaciones.
Por lo tanto, en resumen, utilizando; como separador es simple porque el proceso (correcto) cuando se utiliza el punto y coma es la forma en que un wud normalmente espera que el proceso sea: solo se necesita un paso de codificación.
Quizás esto no fue demasiado confuso. Pero toda la confusión o dificultad se debe al uso de un carácter de separación que se codifica en HTML. Por lo tanto, '&' es el culpable. Y el punto y coma alivia toda esa complicación.
Esta respuesta es engañosa porque se trata estrictamente de codificación de formulario que no es lo que el OP está pidiendo ni estaba en el ejemplo incluido. La codificación de url de formulario es muy antigua y se usa al enviar datos a través de la etiqueta
Si lee los estándares HTTP y URL, verá que no definen ninguna sintaxis para la cadena de consulta, además de escaparse. De hecho, los dos documentos mencionados son las únicas especificaciones para los parámetros de consulta que existen. técnicamente correcto que la codificación de forma (que describen ambas Recomendaciones del W3C) se relaciona con las solicitudes POST, no hay spe similar La codificación para GET y así las implementaciones del navegador han seguido a la primera. Los marcos modernos (por ejemplo, Mojolicious) también están retirando el soporte del separador de punto y coma, y a menos que todos los navegadores se vuelvan a escribir, los símbolos y números nunca desaparecerán. – geira
En cuanto a avanzar hacia AJAX, tome no que el estándar actual [Swagger] (https://swagger.io/docs/specification/describing-parameters/) (a.k.a. OpenAPI) solo permita los parámetros delimitados por ampersand; los puntos y comas solo se permiten como parámetros de ruta o cookie. Si diseñas una API que contradice las especificaciones de Swagger, tienes un problema. – geira