Estou usando um caractere especial HTML "divertido" (✰) (consulte http://html5boilerplate.com/ para obter mais informações) para um Server
cabeçalho HTTP e estou me perguntando se ele é "permitido" por especificação.
Usando a guia Rede nas ferramentas de desenvolvimento do Chrome no Windows Xp Pro SP 3, vejo ✰ muito bem.
No IE8, o ✰ não é renderizado corretamente.
O validador HTML w3.org não o processa corretamente (exibe "
â°
" em vez disso).
Bem, não estou muito interessado em codificações de caracteres ... e, francamente, não me importo muito com eles; Eu apenas uso cus UTF-8 porque me disseram para usar. :-)
A disparidade é causada por bugs nos diferentes analisadores / navegadores / motores / (seja lá como forem)?
Existe uma especificação para isso ou talvez uma lista de caracteres permitidos para um "valor" de cabeçalho HTTP?
fonte
Respostas:
Resumindo: apenas ASCII tem garantia de funcionamento. Alguns bytes não ASCII são permitidos para compatibilidade com versões anteriores, mas não devem ser exibidos.
HTTPbis desistiu e especificou que nos cabeçalhos não há codificação útil além de ASCII:
Anteriormente, RFC 2616 de 1999 definia isso:
e RFC 2047 é a codificação MIME , então seria:
mas não acho que muitos (se houver) clientes o suportem.
fonte
Leia os comentários primeiro, esta resposta provavelmente tira conclusões erradas das fontes certas, precisa ser editada.
Você pode usar qualquer caractere ASCII para impressão, e nenhum caractere especial como ✰ (que não é ASCII )
Dica : você pode codificar qualquer coisa em JSON.
Editar : pode não ser óbvio a princípio, a codificação de caracteres definida no cabeçalho se aplica apenas ao corpo da resposta, não ao cabeçalho em si. (Isso poderia causar um problema de ovo e galinha.)
Eu gostaria de resumir todas as definições relevantes de acordo com as especificações vinculadas por Penchant.
Então, estamos atrás do valor do campo .
LWS significa Linear White Space. Essencialmente, LWS é Espaço ou Tab, mas você pode quebrar o valor do seu campo em várias linhas, iniciando uma nova linha antes de um Espaço ou Tab.
Vamos simplificar para isso:
Agora estamos atrás do conteúdo do campo .
TEXTO é o mais geral e inclui todo o resto - então esqueça o resto-. Aqui está o conjunto de caracteres US-ASCII (= ASCII)
Como você pode ver, todos os caracteres ASCII imprimíveis são permitidos.
fonte
OCTET
s, e comoTEXT
qualquer umOCTET
exceto0 - 31
, isso significa que todos osOCTET
s de32
a255
são permitidos . Os octetos de ✰ são226
,156
e,176
e todos os três são permitidos, portanto ✰ é permitido de acordo com as passagens que você citou.CTLs
"? Será que isso significa os personagensCR
,LF
são permitidos? Ou isso significa que apenas a sequência contínua "CR
LF
SP
/HT
" é permitida? (Por outras palavras, pode conter valores de cabeçalho um únicoCR
ouLF
ouHT
valores de cabeçalho pode conter os caracteres?CR
,LF
EHT
em qualquer ordem e quantidade?)