PHP: codificação atual usado para enviar dados para o navegador

votos
1

Como posso saber o que a codificação será usado pelo PHP quando o envio de dados para o navegador? Ou seja com o cabeçalho cotent-tipo, por exemplo: iso-8859-1.

Publicado 25/09/2008 em 00:08
fonte usuário
Em outras línguas...                            


6 respostas

votos
1

Normalmente servidores Apache + PHP de webhosters são configurados para enviar NO charsetcabeçalho . O caminho mais curto para testar como seu servidor está configurado são estes:

  • Utilize esta ferramenta para ver o cabeçalho do servidor , obtendo qualquer uma das suas páginas em seu webiste. Se nos cabeçalhos de servidor que você ver um charsetsignifica que o servidor está usando, geralmente ele não irá conter charset.
  • Outra maneira é para executar este script simples em seu servidor: <?php echo ini_get('default_charset'); ?>Como dito acima o que normalmente imprime uma cadeia vazia, se for diferente ela vai lhe mostrar o charsetdo PHP.

A 2ª solução é supondo Apache não está configurado com AddDefaultCharset some_charseto que não é geralmente o caso, mas, nesse caso, eu tenho medo configuração Apache pode substituir PHP deafult_charset directiva ini.

Respondeu 06/01/2012 em 13:16
fonte usuário

votos
1

Tenha em mente que tipos de conteúdo e codificações são duas coisas diferentes. text / html é um tipo de conteúdo; ISO-8859-1 e UTF-8 são as codificações.

O cabeçalho de resposta HTTP que o servidor envia normalmente se parece com isso:

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

"Charset" é na verdade a codificação de caracteres. Não é em um cabeçalho separado; no entanto, há um cabeçalho chamado "Content-Encoding", que na verdade especifica que tipo de compressão dos usos de resposta (por exemplo, gzip).

Se você deseja alterar a codificação de caracteres para UTF-8, em um arquivo que contém HTML:

<?
header("Content-Type: text/html; charset=utf-8");
Respondeu 25/09/2008 em 00:22
fonte usuário

votos
1

Você pode usar a solução header () que William sugeriu, no entanto, se você estiver executando o Apache, ea configuração do Apache está usando um conjunto de caracteres padrão, que vai ganhar cada vez (Internet Explorer vai ficar louco) Ver: AddDefaultCharset

Respondeu 25/09/2008 em 00:12
fonte usuário

votos
0

Se o servidor não está configurado para ter um conteúdo padrão ou charset, e nem é PHP, PHP irá enviar apenas Content-Type: text/html- não vai especificar um conjunto de caracteres em tudo, e irá enviar os bytes como ele vê-los no script.

Se um navegador recebe uma página sem charset especificado, várias coisas podem acontecer:

  • a maioria dos navegadores têm um menu "Codificação / Charset"; se o usuário selecionar explicitamente um, o navegador irá tentar aplicá-la. não acontece com muita freqüência, então:
  • alguns navegadores tentar torná-lo com um charset padrão (que é dependente da localidade, por exemplo, para FF e cs_CZ que costumava ser iso-8859-2; YMMV)
  • IE irá tentar determinar o conjunto de caracteres heurística (que vai demorar um palpite, com base na distribuição de caracteres - e muitas vezes acerta, às vezes erra e você terá uma página em romeno interpretado como texto em chinês, o que geralmente significa "ilegível ")
  • alguns navegadores antigos vai voltar a cair us-ascii

Se com este procedimento, charset do script PHP e partidas charset do navegador, o texto será - acidentalmente - ser legível. Se não, haverá sinais estranhos e fenômenos semelhantes.

Respondeu 30/08/2010 em 18:45
fonte usuário

votos
0

AFAIK, PHP envia cordas bytewise. isto é, se as suas variáveis ​​segurar UTF-8, ele irá enviar UTF-8. se você tiver iso-8859-1, ele irá enviar isso também. se você misturá-los, não vai ser bonito.

Respondeu 25/09/2008 em 00:10
fonte usuário

votos
0

Você pode definir o seu próprio com header('Content-type: xxx/yyy');, mas acredito que text / html é enviado por padrão.

Respondeu 25/09/2008 em 00:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more