44 Comments

  1. Jéssica Reis

    Bom dia
    Eu me deparei com um problema de acentuação, o caso é que em localhost fica td correto,mas quando eu subo a pagina somente os dados que vem do banco aparecem errado e no banco a acentuação aparece normalmente.
    Eu não sei qual seria o erro, você poderia me ajudar?

    • Bom dia Jéssica,

      Provavelmente o seu banco em produção não esta configurado corretamente com a codificação igual ao seu banco local.

      Eu recomendo a utilização da codificação UTF-8 como padrão.

      Abraço.

  2. Gabriel

    Valeu pela dica, mas me deparei em um novo problema.
    o banco agora salva : ç Ç á Á à À ã Ã â Â ó Ó õ Õ ô Ô.

    Mas se eles estiverem no meio da palavra da erro, ex:

    vou salvar um registro como Gonçalves, ele buga o ç e não registra.
    se eu colocar Çoncalves ou goncalveÇ o registro é feito (fiz isso por curiosidade kkk)
    e com os demais acontece semelhante.

    pode me ajudar a desvendar este mistério?

    • Gabriel, provavelmente a codificação das tabelas esta diferente da codificação dos arquivos PHP.
      Tente verificar a codificação com o Notepad++ e se estiver errado, faça a conversão. Tente sempre usar em tudo a codificação UTF-8.

      • Gabriel

        dei uma Revisada aqui, e ainda não achei o erro, sou novo na área e ainda apanho muito, segue alguns detalhes do código:

        na conexão:

        $conexao=mysql_connect($host, $user, $pass);
        $selectdb=mysql_select_db($dbname);
        mysql_query(“SET NAMES ‘utf8′”);
        mysql_query(‘SET character_set_connection=utf8’);
        mysql_query(‘SET character_set_client=utf8’);
        mysql_query(‘SET character_set_results=utf8’);

        Utilizo um header.php para todas as páginas, o qual faço um include em cada página, e está assim:

        Utilizo o Dreamwiever e nele está utf-8 tb

        e no BD as tabelas estão em utf8_general_ci.

        notei aqui que no BD os caracteres entram normalmente inserindo direto.
        ai coloquei as variáveis para mostrar junto ao retorno, e vi que é a função que está retornando o problema.

        nomes como Érica, Ângela vai certinho, mas se tiver ç ´ ~ ^ no meio da palavra não retorna corretamente, ex: Mariângela retorna Mari�ngela

        alguma dica ?

        • Gabriel

          Encontrei o problema aqui. estava no tratamento das variáveis.
          no caso estava:
          $nome=ucwords(strtolower($nome));
          removi o tratamento e deu certo, agora vou procurar outro modo de se realizar o tratamento,
          Obrigado pela ajuda!

  3. Davi

    Tive um problema.
    Ao criar url amigável, trabalhando dessa forma acabam sendo “comidas” algumas letras.
    Por exemlo:
    Quer uma url site.com.br/econômica
    Usando UTF-8 fica site.com.br/econmica
    Pois o “ô” que corresponde ao ô é cortado.

    Existe alguma tabela para substituição de todo esse jogo de caracteres como “ô” por “o” ?

    • marcos

      Esse problema pode ser resolvido da seguinte maneira:
      1. Primeiro criar uma coluna na tabela no Bd, para ser inserido um campo de url amigavel.
      2. Fazer uma função no php onde você irá pegar a variável do campo em questão, está função deverá converter os espaço e acentos para uma url amigável e devolver esse valor para ser inserido na coluna criada.

      Espero que tenha ajudado!
      Att. Marcos Taborda

  4. Pedro Queiroz

    Em tempo: você citou como editor o Notepad++, mas se me permite uma sugestão, eu uso o PSPad: não é necessário instalar e tem a vantagem de executar o script a partir dele.

  5. David Augusto

    Ola, tudo bem?
    me tira uma duvida, se puder.
    Eu uso mediawiki e quando fiz o BD no mysql, selecionei utf8 general ci, esta utf8 general ci em todas tabelas e banco / conexao

    so que o problema é que para eu pesquisar no BANCO, fica ruim, no site esta tudo ok, acentuação e etc, mas no banco de dados, caracteres especiais… exemplo ou800 necessidade deu800 comunicau8c3a7u8c3a3o… como corrigir isso? :/

    • Olá David, me parece que o sistema está enviando os dados para o banco em uma codificação diferente da que esta configurado banco. Não conheço esse sistema de wiki, mas recomendo que leia a documentação do mesmo e verifique qual a codificação que eles indicam para o banco de dados. Para suas pesquisa via Sql, tente converter o campo na condição da pesquisa por exemplo: WHERE CONVERT(column2 USING utf8) = “TESTE”.

  6. Bem no meu caso não ajudou. Mas eu descobri outras formas, mas na internet:
    =========================================
    // A função abaixo tira o acentos das palavras, não testei o “ç” e o ” ¨ ”
    //A função serve para pesquisa os dados do banco, quando vc não estar conseguindo resolver o problema dos acentos convertendo, mesmo tendo alterado o colletion do banco
    function tira_acento($str){
    $limpa = preg_replace( ‘/[`^~\'”]/’, null, iconv( ‘UTF-8’, ‘ASCII//TRANSLIT’, $str ) );
    return $limpa;
    }

    //Converte o carácter que dando o problema na pagina para o carácter correto
    $titulo=utf8_decode($_POST[‘titulo’])
    ==================================
    Abraço e a paz a todos.

  7. Bruno

    Estava com problema somente no momento de gravar as variáveis php no banco. Este trecho que você postou me ajudou:

    mysql_query(“SET NAMES ‘utf8′”);
    mysql_query(‘SET character_set_connection=utf8’);
    mysql_query(‘SET character_set_client=utf8’);
    mysql_query(‘SET character_set_results=utf8’);

    Muito Obrigado!

  8. Ale

    Estava com esse problema. Embora ao desenvolver no servidor local não aparecesse, mas era carregar no remoto para ele surgir. Suas dicas resolveram. Daqui pra frente será meu padrão. Fico agradecido!

  9. Ricardo Bellanda

    Amigo, muito obrigado, ajudou muito.
    Realmente esse problema é extremamente chato!
    Se não fosse a torre de babel teríamos um padrão único. rsssss

  10. Diogo Lessa

    Rafael

    utilizei o bloco de notas… salvei os arquivos em UTF-8… só que o erro persiste meu caro…

    inclusive e o banco mysql também está collation utf8_general_ci…

    andei pesquisando no google e não encontrei soluções para o meu problema…

    mas continuo na luta!

    Agradeço de novo!

    Diogo Lessa

  11. DiogoLessa

    Olá, muito bom seu tópico!

    Baseado nele que estou sentindo algumas dificuldades (charset=utf-8);
    Tô usando o Dreamweaver para criar uma página de blog em PHP, e no navegador estão aparecendo muitos erros como este:
    a quinta, � hora de resolver a parte pr�tica. Ap�s arrancar uma vit�ria heroica no gin�sio Ilhas Malvinas
    Criei um banco de dados MySql e o armazenamento deles é perfeito, mas quando vou exibir no navegador… aparece estes problemas com a acentuação!

    Testei as informações passadas nesse blog e não deram certas… agradeço qualquer ajuda!

    Um abraço!

    • raphael

      Diogo, provavelmente os arquivos que você criou no Dreamweaver não foram salvos no formato UTF-8.
      Voce pode converter todos os arquivos do seu projeto simplesmente abrindo os mesmos no bloco de notas do windows e clicando na opção ” arquivo” e em “salvar como” na parte inferior da tela a seguir tem o campo “codificação”, basta você selecionar a opção UTF-8. No Dreamweaver deve haver esta opção para configuração, mas como nao uso o Dreamweaver, nao sei dizer como fazer isso, mas nada que o Google não saiba. Faça o teste e me diga se conseguiu.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *