charset = a página da Web iso-8859-2 é exibida com o cabeçalho UTF-8 - pontos de interrogação ( ) em vez de letras acentuadas

1

Eu tenho uma questão de administração do servidor web. Neste site: link Todas as páginas geradas pelo PHP contêm a seguinte linha:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />

Mas isso é, de alguma forma, desconsiderado, provavelmente através do processamento php-apache, e a página é exibida em navegadores com um cabeçalho UTF-8. Como resultado, os pontos de interrogação ( ) são mostrados no texto da página em vez de caracteres acentuados (éáöőóüűúí). Eu testei isso no Firefox, IE, Chrome e Seamonkey.

O mais estranho neste fenômeno, que este sintoma começou apenas ontem, depois que eu atualizei meu servidor para o Debian 8.0 Jessie do 7.0 Wheezy. Durante a atualização, também atualizei todos os outros pacotes, incluindo apache, php e assim por diante, e selecionei "yes" para sobrescrever arquivos de configuração por padrão de fábrica. Depois disso, ajustei meus arquivos de configuração para ter tudo do jeito que gosto, mas não encontrei uma maneira de corrigir isso. Antes da atualização, a página foi exibida bem.

Aqui está uma captura de tela, onde você pode ver que o Firefox vê a definição "charset = iso-8859-2", mas ainda exibe a página com a codificação UTF-8.

Minha suspeita é que este é um problema de configuração do servidor, mas também pode ser que uma parte do componente de processamento (Apache, php) tenha sido alterada de alguma forma devido à atualização, resultando nesse comportamento estranho. O problema é que não consigo identificar o que poderia causar esse problema.

Alguém pode resolver esse mistério? O que poderia estar dando errado durante o processamento da página?

    
por giny8i8 03.12.2015 / 08:45

3 respostas

3

Os cabeçalhos HTTP do servidor dizem

Content-Type: text/html; charset=UTF-8

quais navegadores provavelmente considerariam mais confiáveis do que o conteúdo do arquivo. Por que não apenas usar o UTF-8? É uma codificação estabelecida em todas as plataformas.

Além disso, há um texto ruim antes da declaração HTML:

[M _2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
por 03.12.2015 / 08:52
0

Depois de muita pesquisa, consegui encontrar a solução certa. Meus agradecimentos voam @ Daniel B , por me apontar na direção certa. :)

Parece que, devido à atualização, o mecanismo apache2 processa todos os arquivos Content-Type "text/html com UTF-8 charset, desconsiderando a instrução <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> nos arquivos html / php reais. Eu não tenho certeza porque isso deveria ser uma coisa boa (por favor, explique se você puder). No entanto, a solução para se livrar dos caracteres de ponto de interrogação ( ) foi a seguinte:

A solução : Adicionei a linha abaixo à definição VirtualHost apache2 do meu site em /etc/apache2/sites-available/MySiteName.conf do que recarreguei as configurações do servidor com o comando service apache2 reload . Depois disso, os arquivos são exibidos com o cabeçalho de codificação de caractere Content-Type: text/html; charset=iso-8859-2 adequado.

<VirtualHost * >

# [...Some other configurations before this line]

    #To fix encoding problem, that pages display with UTF-8 header though they are created with iso-8859-2 encoding - giny8i8 2015-12-03
    Header set Content-Type "text/html; charset=iso-8859-2"
        # Source:  http://superuser.com/questions/1008480/charset-iso-8859-2-webpage-displays-with-utf-8-header-question-marks-inste/1008482?noredirect=1#comment1397150_1008482

</VirtualHost>

Deixe-me saber se isso funciona para você também, se você encontrar o mesmo desafio após uma atualização Debian 8.0 Jessie! Eu procurei por isso na internet, mas não o encontrei escrito assim. Daí o meu post de resposta.

    
por 03.12.2015 / 17:31
0

A solução descrita por giny8i8 funciona. No entanto, se por algum motivo você quiser que as mensagens de erro apareçam nesse conjunto de caracteres, você deve usar:

Cabeçalho define sempre o tipo de conteúdo "text / html; charset = iso-8859-15"

    
por 20.03.2018 / 11:03