problema utf-8 php
tenho tido problemas ao tentar alterar o meta da página para utf-8, acrescentei <br /><br />"&lt;/meta meta http-equiv="content-type" content="text/html; charset=utf-8" ... "<br /> , no header da pág
<p>hmm, então já está salvo no banco com essas coisas. bom, você tem problemas de codificação em algum lugar. seja nos seus arquivos php, html ou mesmo no banco. tenta usar essa função antes de fazer as queries pra ver se resolve daniel.</p>
<pre class="prettyprint"><code>mysqli\_set\_charset ( $conexao , &#34;utf8&#34;)</code></pre>
<p>tenta inserir e remover registros depois de usar essa função pra ver se resolve.</p>
```
header('Content-type: text/html; charset=UTF-8') ;

/**
 * Encodes HTML safely for UTF-8. Use instead of htmlentities. 
 *
 * @param string $var 
 * @return string 
 */
function html_encode($var)
{
    return htmlentities($var, ENT_QUOTES, 'UTF-8');
}

```

Esses dois me salvou e eu acho que agora está *trabalhando* . Eu vou voltar se eu continuar a encontrar problemas. Devo armazená-lo no DB, por exemplo, como "&" ou como "&"? Quando o documento é transferido através de HTTP, [as informações do cabeçalho HTTP são as informações crutial](http://www.w3.org/TR/html401/charset.html#h-5.2.2) :



> 
> [...] agentes de usuário conformes devem observar as seguintes prioridades para determinar a codificação de caracteres de um documento (da mais alta prioridade para a menor):
> 
> 
> 1. Um HTTP " `charset`" parâmetro em um " `Content-Type`campo".
> 2. Uma `META`declaração com " `http-equiv`" definido para " `Content-Type`" e um valor definido para " `charset`".
> 3. O `charset`conjunto de atributos em um elemento que designa um recurso externo.
> 
> 
> 


Portanto, verifique se você declarar a codificação de caracteres no [`Content-Type`campo de cabeçalho](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17) e não apenas dentro do documento. Normalmente servidores Apache + PHP de webhosters são configurados para enviar **NO `charset`cabeç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](http://www.seoconsultants.com/tools/headers) , obtendo qualquer uma das suas páginas em seu webiste. Se nos cabeçalhos de servidor que você ver um `charset`significa 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 `charset`do PHP.


A 2ª solução é supondo Apache não está configurado com `AddDefaultCharset some_charset`o que não é geralmente o caso, mas, nesse caso, eu tenho medo configuração Apache pode substituir PHP deafult\_charset directiva ini. **Editar** : ok eu acho que isso funciona (pelo menos funcionou no meu ambiente de teste, ver revisões para tentativa anterior)



```
$.ajaxSetup({
    'beforeSend' : function(xhr) {
        xhr.overrideMimeType('text/html; charset=UTF-8');
    },
});
$('#stuff').load('/yourresource.file'); // your ajax load

```

o que eu tinha era o principal arquivo definido no `UTF-8`eo arquivo de dados definido em `ISO-8859-1`. sem o código acima, eu tenho um monte de lixo para a cadeia teste **åäöé** , como esperado. com o código acima, carregou **åäöé** adequadamente codificada. <p>o problema acabou sendo algo tão simples quanto <code>&amp;amp;</code>, mudança simples:</p><pre><code>&lt;input type="hidden" name="return-url" value="&lt;?php echo base64\_encode('index.php?option=com\_file\_manager&amp;amp;view=file&amp;amp;layout=modal&amp;amp;tmpl=component'); ?&gt;" /&gt; </code></pre><p>para:</p><pre><code>&lt;input type="hidden" name="return-url" value="&lt;?php echo base64\_encode('index.php?option=com\_file\_manager&amp;view=file&amp;layout=modal&amp;tmpl=component'); ?&gt;" /&gt; </code></pre><p>fiz o truque. obrigado a todos por suas contribuições.</p> <p>eu realmente consegui resolver meu próprio problema. para qualquer um que possa ler isso, o problema que causou isso foi que o meu arquivo <code>functions.php</code> tinha um fechamento</p><pre><code>?&gt; </code></pre><p>no final. por alguma razão, isso é o que causou o problema e, ao remover essa última linha, estava funcionando novamente.</p> <p>com php você só pode lidar com coisas do lado do servidor. o que você pode fazer é imprimir isso no seu iframe:</p><pre><code>parent.window.location.reload(); </code></pre> <p>tudo bem. eu descobri que o file\_get\_contents () não está causando esse problema. há uma razão diferente da qual falo em outra questão. me bobo.</p><p>veja esta pergunta: <a href="https://stackoverflow.com/questions/2236889/why-does-dom-change-encoding">por que o dom muda a codificação?</a> </p> O espaço não-separável não está sendo guardada no seu banco de dados como um personagem estrangeiro estranho, ele está sendo salvo como *dois* caracteres. O caractere de Unicode espaço sem quebra é codificado em UTF-8 como `0xC2 0xA0`, o qual na norma ISO 8859-1-se parece com "A" (isto é, um caracteres estrangeiros estranho seguido de um espaço não separável).


Você provavelmente está se esquecendo de fazer `SET NAMES 'utf8'`na sua conexão de banco de dados, o que faz com PHP para enviar seus dados para o MySQL como ISO-8859-1 (o padrão).


Dê uma olhada no " [UTF-8 todo o caminho ...](https://stackoverflow.com/questions/279170/utf-8-all-the-way-through) " para ver como configurar corretamente UTF-8 quando usando PHP e MySQL. olá ismael, você pode utilizar um driver oficial do mongodb para php. após instalar o driver ([url:descricao=instalação no os windows ] //haafiz.me/development/installing-mongodb-driver-mongocl...