Quando um servidor envia um documento para um agente usuário (ex.: um navegador) ele também envia informações no campo "Content-Type" do cabeçalho HTTP sobre o tipo do formato do dado enviado. Essa informação é expressa utilizando-se um rótulo de tipo MIME. Esse artigo provê uma informação inicial para aqueles que necessitam configurar a informação de codificação de caracteres (N.T.: daqui em diante descrita por charset) a ser enviada no cabeçalho HTTP.
Você deve procurar em outro lugar por informações sobre como declarar a codificação de caracteres em páginas HTML, ou como descobrir a informação de codificação de caracteres que está sendo enviada num cabeçalho HTTP.
Documentos transmitidos por meio do HTTP que são do tipo texto, tais como text/html, text/plain, etc., podem enviar um parâmetro charset no cabeçalho HTTP para especificar a codificação de caracteres a ser utilizada no documento.
É muito importante sempre rotular explicitamente documentos Web. O padrão HTTP 1.1 diz que o charset padrão é o ISO-8859-1. Porém existem muitos documentos não rotulados em outras codificações, por isso os navegadores(browsers) utilizam a codificação preferida do leitor quando não é definido um parâmetro charset.
A linha no cabeçalho HTTP tipicamente aparece desta forma:
Content-Type: text/html; charset=utf-8
Em teoria, qualquer codificação de caracteres que tenha sido registrada com a IANA pode ser utilizada, porém nenhum navegador entende todas. Quanto mais comum for a utilização de uma codificação de caracteres, mais chances do navegador entendê-la . Uma codificação Unicode tal como a UTF-8 é uma boa escolha por um número de razões.
Como fazer o servidor enviar a informação charset apropriada depende do servidor utilizado. Você precisará ter permissão administrativa para poder mudar configurações no servidor.
Apache. A mudança pode ser feita utilizando-se as diretivas AddCharset (Apache 1.3.10 ou mais recente) ou AddType, para diretórios ou recursos individuais (arquivos). Com a AddDefaultCharset (Apache 1.3.12 ou mais recente), é possível configurar um charset padrão para todo o servidor. Para maiores informações, veja o artigo Configurando a informação de 'charset' no .htaccess.
Jigsaw. Use um indexer em JigAdmin para associar extensões com charsets, ou configure o charset diretamente em um "resource".
IIS 5 e 6. Na opção Gerenciador de Serviços Internet, clique com o botão direito em "Web Site Padrão" (ou
no site o qual deseja configurar) e vá em "Propriedades" => "Cabeçalhos HTTP" => "Tipos de arquivos..." => "Novo tipo...". Coloque as
extensões que deseja mapear, separadamente para cada extensão; Usuários IIS irão provavelmente quere mapear .htm, .html,... Então, para Tipo de
Conteúdo, adicione "text/html;charset=utf-8
" (sem as aspas; substitua o charset desejado por utf-8; não deixe nenhum espaço em nenhum lugar
pois o IIS ignora todo texto após espaços). Para IIS 4, você pode ter que usar "Cabeçalhos HTTP" => "Criar um cabeçalho HTTP customizado" se os
passos acima não funcionarem.
O cabeçalho apropriado pode ser configurado no código-fonte do script utilizado. Por exemplo:
Perl. Imprima o cabeçalho correto antes de qualquer outra parte da página. Após o último cabeçalho,
utilize use uma quebra de linha (\n) dupla, ex.:
print "Content-Type: text/html; charset=utf-8\n\n";
Python. Use a mesma solução para Perl (exceto pelo fato do ponto-e-vírgula(;) ser desnecessário no fim da linha).
PHP. Use a função header() antes de enviar qualquer conteúdo da
página, ex.:
header('Content-type: text/html; charset=utf-8');
Java Servlets. Use o método setContentType em ServletResponse antes de obter qualquer objeto
(Stream ou Writer) utilizado para impressão de dados, ex.:
resource.setContentType ("text/html;charset=utf-8");
Se você utilizar um Writer, o Servlet automaticamente efetua a conversão das Strings para a codificação selecionada.
JSP. Use a diretiva page
ex.:
<%@ page contentType="text/html; charset=UTF-8" %>
O envio de dados proveniente de out.println()
ou de elementos de expresão (<%= object%>
) é
automaticamente convertido para a codificação selecionada. Também, a página é interpretada utilizando essa codificação.
ASP e ASP.Net. ContentType e charset são configurados independentemente, e são métodos do objeto de
resposta. Para configurar o charset utilize:
<%Response.charset="utf-8"%>
Em ASP.Net, configurando o atributo Response.ContentEncoding irá
configurar tanto o parâmetro charset no cabeçalho HTTP Content-Type quanto a codificação do documento sendo enviado (que obviamente tem que ser a
mesma). O Padrão pode ser configurado no elemento globalization
em Web.config
(ou Machine.config
, que é originalmente configurado para UTF-8).
Checando a informação de codificação de caracteres sendo enviada num cabeçalho HTTP
Links relacionados, Setting up a server
Links relacionados, Authoring HTML & CSS
Links relacionados, Authoring SVG