Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fsales_123

charset

Recommended Posts

boa noite galera, estou com problema com charset, um amigo meu falo para mim usar isso (html_entities) ou (utf8_decode) na onde eu coloco isso (html_entities) ou (utf8_decode) em qual parte do código... desde já agradeço.

 

 

meu código:

 

<?php echo $ln->titulo; ?>

 

<?php echo truncate(strip_tags($ln->descricao), 500); ?>

 

 

a onde eu coloco o (html_entities) ou (utf8_decode)?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se usar UTF-8 em tudo, não precisa de nada disso

 

Veja este artigo: http://rberaldo.com.br/problemas-com-codificacao-acentos-nao-interpretados/

 

htmlentities() vai ser útil para evitar ataques por XSS, mas não vai corrigir erro de codificação

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por trrac388
      Pessoal, já rodei o fórum e não achei nada igual parecido ao problema que estou tendo, só por isso estou abrindo este tópico.
       
      Já tentei inúmeras saídas como setar tudo através de mysql_query após a conexão com o banco entre diversas outras possíveis soluções e nada resolveu, então vou explicar.
       
      Meus arquivos estão todos codificados com UTF-8, meus cabeçalhos HTML todos com UTF-8, meu banco de dados MySQL e Tabelas todos UTF-8 e character set utf8_general_ci.
       
      Pela aplicação funciona direitinho, entre aspas, todo o processo de visualização de dados dentro da aplicação é aparentemente normal, leio e gravo caracteres acentuados sem nenhum problema aparente, até o momento em que tento fazer um SELECT com palavras acentuadas ou usando o  LIKE '% xx %'.
       
      Fui verificar o que poderia estar ocorrendo pois essas consultas não retornavam absolutamente nada então, lá estava o problema:
       
      Os registros no banco, estavam sendo gravados totalmente desconfigurados.
       
      A palavra "Conceição" que aparece normalmente na aplicação, no banco de dados está gravada como : Conceição
      A palavra "Pátria" que também aparece normalmente na aplicação, no banco de dados está gravada como: Pátria
      A palavra "Rosângela" que também aparece normalmente na aplicação, no banco de dados está gravada como: Rosângela
       
      Exemplo de testes das palavras exibidas na página HTML/PHP

       
      Exemplo dos dados gravados no banco MySQL


      Criei um novo banco de teste com Latin1 e character set Latin1_swedish_ci e também não resolveu, o caracteres estranhos foram susbtituidos por losangos pretos. :(

       
      O mesmo ocorreu com Latin1 e character set latin1_general_ci.
       
      Alguém sabe me dizer onde pode estar o problema? Já tentei de tudo que encontrei na internet sobre esse tema e nada resolveu.
       
      Obrigado a todos!!
    • Por Gilberto Jr
      Boa tarde;
       
      Eu estou com um problema de CHARSET na minha pagina.
       
      Elas são HTML 5, e esta como UTF-8. O banco de dados tambem é UTF-8. Porem o texto esta saindo assim na minha pagina.

       
      O meu codigo de conexão com o banco de dados é esse abaixo.
      <?php $conecta = mysqli_connect("localhost:3308", "admin", "211613", "jeremais"); header('Content-Type: text/html; charset=utf-8'); ?> Mesmo com o HEADER dentro do arquivo de conexão esta dando erro de charset.
       
      Alguém poderia me ajudar?
       
      Att;
      Gilberto Jr
    • Por halfar
      É aquele velho problema de caracteres estranhos.
       
      Criei minha base e seu conteudo com utf8, e tudo vinha bem sem nenhum problema.
       
      Fiz um backup da base de dados e tive que formatar a maquina.  Fiz as copias em arquivo.sql.
       
      Depois na hora de importar os dados começaram os problemas, os textos ficaram todos com acentuações erradas.
       
      Já revirei a net em procura da solução, mas nada funcionou.
       
      o meu arquivo sql :
      -- Adminer 4.2.5 MySQL dump SET NAMES utf8; SET time_zone = '+00:00'; SET foreign_key_checks = 0; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; DROP TABLE IF EXISTS `relatos`; CREATE TABLE `relatos` (   `id` int(2) NOT NULL AUTO_INCREMENT,   `titulo` varchar(70) NOT NULL,   `relato` text NOT NULL,   `data` date DEFAULT NULL,   `autor` varchar(20) NOT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
      no banco de dados está como utf8_general_ci.
       
      Na página html está como:
       
       
       
      Peguei um script da net, na hora de se conectar com o banco de dados:
      define('DB_HOST', 'localhost'); define('DB_SCHEMA', 'bdados'); define('DB_USER', 'usuario'); define('DB_PASSWORD', 'senha'); define('DB_ENCODING', 'utf8'); $dsn = 'mysql:host=' . DB_HOST . ';dbname=' . DB_SCHEMA; $options = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ); if( version_compare(PHP_VERSION, '5.3.6', '<') ){ if( defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){ $options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES ' . DB_ENCODING; } }else{ $dsn .= ';charset=' . DB_ENCODING; } $conn = @new PDO($dsn, DB_USER, DB_PASSWORD, $options); if( version_compare(PHP_VERSION, '5.3.6', '<') && !defined('PDO::MYSQL_ATTR_INIT_COMMAND') ){ $sql = 'SET NAMES ' . DB_ENCODING; $conn->exec($sql); }  
      Na própria tabela tentei alterar também  um dos campos da tabela para latin1_swedish_ci, mas também não funcionou. Neste caso, em uma outra ocasião, em um provedor tive este tipo de problema e bastou fazer isto e resolveu.
       
      Finalizando, o banco de dados do mysql é do laragon, o maria_db....
    • Por Rodrigo Gama
      Olá pessoal. Eu não estou entendo o motivo da minha página não estar aceitando caracteres acentuados. Estou seguindo um curso em videoaulas e, apesar de eu não ter feito nada especialmente diferente do instrutor, minha página não reconhece caracteres com acentuação.
       
      O projeto pode ser conferido nos arquivos em anexo e o resultado, na imagem abaixo:
       
      Como podem ver, os menus abaixo do título da página não estão aceitando caracteres acentuados. Enquanto isso, os caracteres dentro de "article > section > p" estão.
       
      Procurei em vários lugares sobre a solução do problema, e tentei algumas destas, mas sem sucesso. Agradeço de verdade qualquer ajuda que puderem dar.
       
      PS: Sim, o layout é feio que nem bater em mãe, mas como era só teste eu não me importei.
       
       
       
      estilos.css
      home.html
      index.html
      sobre.html

    • Por Raffael Dornelles Jardim
      Pessoal, boa noite!
      Criei um script de teste para fazer insert em uma tabela Mysql mas esta gravando "São Paulo" com caracteres especiais.
      Esta gravando assim: São Paulo
      Tabela Dados com 2 campos
      id int
      nome varchar
      Collation = utf_unicode_ci
      Script de Teste:
      <?php /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * Description of testeInsert * * @author Raffael */ class testeInsert { private $conn; private $nome; public function abreConexao() { try { $this->conn = new PDO('mysql:host=localhost;dbname=teste', 'root', ''); $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { echo 'ERROR: ' . $e->getMessage(); } } public function gravaDados() { try { $this->nome="São Paulo"; $query = "INSERT INTO dados(nome) VALUES('{$this->nome}')"; $stmt = $this->conn->prepare($query); $stmt->execute(); } catch (Exception $ex) { echo $ex->getMessage(); } } } header("Content-type: text/html;charset=utf-8"); $obj = new testeInsert(); $obj->abreConexao(); $obj->gravaDados();
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.