¿Es preferible el uso de "utf8 = ✓" a "utf8 = true"?

569

Recientemente he visto algunos URI que contienen el parámetro de consulta "utf8 = ✓". Mi primera impresión (después de pensar "mmm, se ve genial") fue que esto podría usarse para detectar una codificación de caracteres rota.

Entonces, ¿es esta una mejor manera de resolver posibles problemas con la codificación de caracteres, o es solo un desarrollador divirtiéndose con un hack?

Gary Rowe
fuente
77
Estoy en desacuerdo. Existen esquemas que se parecen a los URN y que toman parámetros de consulta, como Bitcoin. Los URI no se limitan a los navegadores. Ver en.wikipedia.org/wiki/URI_scheme . Esta pregunta también puede abordar el caso general donde se requiere la codificación de caracteres cuando un navegador accede a un controlador de protocolo.
Gary Rowe
3
Dé ejemplos de estas URL o no sucedió.
Hakre
10
Fuera de tema, pero está bien. Aquí está mi donación personal URI de Bitcoin: bitcoin: 1KzTSfqjF2iKCduwz59nv2uqh1W2JsTxZH? Monto = 0.5 & label = Agile% 20Stack. Tenga en cuenta que el esquema es esencialmente una URN con parámetros de consulta, pero se entrega a un controlador de protocolo. Este tipo de URI probablemente también podría beneficiarse de la solución "utf8 = ✓".
Gary Rowe
1
@GaryRowe ¿Alguna vez recibió alguna donación de ese enlace?
Kyralessa

Respuestas:

814

De forma predeterminada, las versiones anteriores de IE (<= 8) enviarán datos de formulario en codificación Latin-1 si es posible. Al incluir un carácter que no se puede expresar en Latin-1, IE se ve obligado a usar la codificación UTF-8 para sus envíos de formularios, lo que simplifica varios procesos de back-end, por ejemplo, la persistencia de la base de datos.

Si el parámetro fuera en su lugar utf8=true, esto no desencadenaría la codificación UTF-8 en estos navegadores.

Gareth
fuente
8
@LarsViklund Debería haber sido más claro con mi comentario. Quise decir que la validación asociada con la codificación de caracteres se simplifica, no se pasa por alto.
Gary Rowe
3
@Lars Correcto, no lo exime de tener que verificar su entrada. Pero sí significa que los ajustes de codificación solo se vuelven parte de su manejo de seguridad y no contaminan el concepto de su ruta de "procesamiento estándar"
Gareth
36
Consulte también stackoverflow.com/questions/3222013/… . Aparentemente, Ruby on Rails solía usar un personaje de muñeco de nieve, y se cambió a una marca de verificación que era menos ambigua pero menos divertida.
Jack V.
11
@JohnLBevan es ignorado por el receptor, está hecho su trabajo para forzar al navegador a enviar cosas en utf8 en lugar de latin1. También lo he visto como ie = 💩 (ese es el punto de código 'montón de caca', parece que no se
muestra
3
@Gareth: ¿Puede hacer una copia de seguridad de la afirmación de que IE <= 8 formularios no son compatibles con el documento y / o la codificación de formularios?
Hakre