-
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 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(); -
Por SamBuilder
Olá Pessoal,
Estou tendo dificuldades para resolver um problema com a chamada do header para o charset UTF-8 no início dos meus scripts.
Localmente o sistema funciona beleza sem nenhum erro. Quando envio para o servidor o sistema me retorna uma mensagem de alerta.
Warning: Cannot modify header information - headers already sent by (output started at /home/virtual311/public_html/site/institucional.php:1) in /home/virtual311/public_html/site/institucional.php on line 2
Esse é meu script: <?php header("Content-Type: text/html; charset=UTF-8",true); ?> Já fiz algumas pesquisas e parece que vários programadores já passaram pelo mesmo problema mais ainda não consegui resolver com as dicas sugeridas.
Se alguém puder ma dar mais uma luz fico grato.
-