Estoy usando un carácter especial HTML "divertido" (✰) (consulte http://html5boilerplate.com/ para obtener más información) para un Server
encabezado HTTP y me pregunto si está "permitido" por especificación.
Usando la pestaña Red en las herramientas de desarrollo en Chrome en Windows Xp Pro SP 3, veo el ✰ muy bien.
En IE8, ✰ no se representa correctamente.
El validador HTML de w3.org no lo representa correctamente (muestra "
â°
" en su lugar).
Ahora, no estoy muy interesado en las codificaciones de caracteres ... y, francamente, no me importan demasiado; Solo uso ciegamente UTF-8 cus, me dijeron. :-)
¿La disparidad es causada por errores en los diferentes analizadores / navegadores / motores / (como se llamen)?
¿Existe una especificación para esto o tal vez una lista de caracteres permitidos para un "valor" de encabezado HTTP?
fuente
Respuestas:
En resumen: solo ASCII está garantizado para funcionar. Se permiten algunos bytes que no son ASCII para compatibilidad con versiones anteriores, pero no se supone que se puedan visualizar.
HTTPbis se rindió y especificó que en los encabezados no hay codificación útil además de ASCII:
Anteriormente, RFC 2616 de 1999 definía esto:
y RFC 2047 es la codificación MIME , por lo que sería:
pero no creo que muchos (si es que hay alguno) clientes lo apoyen.
fuente
Lea los comentarios primero, esta respuesta probablemente extraiga conclusiones incorrectas de las fuentes correctas, necesita editarse.
Puede utilizar cualquier carácter ASCII imprimible y ningún carácter especial como ✰ (que no es ASCII )
Consejo : puedes codificar cualquier cosa en JSON.
Editar : puede que no sea obvio al principio, la codificación de caracteres definida en el encabezado solo se aplica al cuerpo de la respuesta, no al encabezado en sí. (Ya que causaría un problema de huevo y gallina).
Me gustaría resumir todas las definiciones relevantes según la especificación vinculada por Penchant.
Entonces, estamos detrás del valor de campo .
LWS son las siglas de Linear White Space. Básicamente, LWS es Espacio o Tabulación, pero puede dividir su valor de campo en varias líneas comenzando una nueva línea antes de un Espacio o Tabulación.
Simplifiquemos esto a esto:
Ahora buscamos contenido de campo .
TEXTO es el más general e incluye todo el resto -así que olvídate del resto-. Aquí está el juego de caracteres US-ASCII (= ASCII)
Como puede ver, se permiten todos los caracteres ASCII imprimibles.
fuente
OCTET
s, y SinceTEXT
es cualquieraOCTET
excepto0 - 31
, esto significa que se permiten todos losOCTET
s desde32
hasta . Los octetos de ✰ son , y , y los tres de ellos se les permite, por lo tanto ✰ está permitido de acuerdo a los pasajes que citó.255
226
156
176
CTLs
"? ¿Quiere decir los caracteresCR
,LF
se permiten? ¿O significa que solo se permite la secuencia continua "CR
LF
SP
/HT
"? (En otras palabras, puede cabecera valores contienen una solaCR
oLF
oHT
valores de cabecera puede contener los caracteres?CR
,LF
YHT
en cualquier orden y cantidad?)