Jump to content
halfar

problemas de acentuação no mysql

Recommended Posts

É 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:

Citar

<meta content="text/html; charset=UTF-8"  http-equiv="content-type">

 

 

 

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....

Share this post


Link to post
Share on other sites

bem, encontrei uma solução,  e posto aqui apenas para efeito de conhecimento.

 

inicialmente criei a estrutura da tabela manualmente no mysql. Em seguida, ao invés de importar os dados da tabela,  no arquivo sql  que havia criado anteriormente para salvar os dados da tabela, apenas peguei o trecho do código que faz a inserção do registro e colei na linha de comando do sql, assim:

 

Citar

INSERT INTO `tabela` (`id`, `titulo`, `relato`, `data`, `autor`) VALUES ...etc...

 

e ficou tudo certinho...

 

menos mal, foi uma solução sem transtornos, já tava imaginando que teria que corrigir aquela acentuação toda manualmente...

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By tetsuo
      Bom dia pessoal!
      Me orientem aqui, se puderem:
      Estou usando mysql.
      Preciso ordenar Eventos conforme a sequência:
       
      1) os que estão acontecendo: status = started
         (ordem crescente datetime)
      2021-12-07 07:00:00 | started 2021-12-07 08:00:00 | started 2021-12-07 09:00:00 | started  
      2) os que vão acontecer: status = created
         (ordem crescente datetime)
      2021-12-07 13:00:00 | created 2021-12-07 14:00:00 | created 2021-12-07 15:00:00 | created  
      3) os que passaram da data, mas não foram iniciados
         (ordem decrescente datetime)
      2021-12-07 06:00:00 | created 2021-12-07 05:00:00 | created 2021-12-07 04:00:00 | created  
      4) os finalizados: status = finished
         (ordem decrescente datetime)
      2021-12-06 12:00:00 | finished 2021-12-05 17:00:00 | finished 2021-12-04 19:00:00 | finished Estava tentando com case when 
      order by CASE WHEN E.status = 'started' THEN 1 WHEN E.status = 'created' && eventDateTime >= NOW() THEN 2 WHEN E.status = 'created' && eventDateTime < NOW() THEN 3 WHEN E.status = 'finished' THEN 4 ELSE 5 END Mas não sei combinar o THEN 1 + eventDateTime ASC ou DESC
      Será que é possível resolver numa querie só?
      Ou vou ter que fazer 4 consultas distintas?
    • By Negrito
      Olá Pessoal, 
       
      Converti o banco de dados de uma app em ASP Classico de MSSQL para MySQL para redução de custos e percebi que alguns componentes ou recursos não estão mais funcionando devido a não compatibilidade com o MySQL , como por exemplo a função : RecordCount
       
      Já consegui converter e atualizar 95% de aplicação para rodar com o MySQL, mas tem 1 item que esta tirando meu sono e após dias pesquisando, resolvi pedir ajuda.
       
      Segue o meu codigo abaixo , onde estou com problema no resultado dessa operação:
       
      <%
      ...
      Set RS = Server.CreateObject("ADODB.Recordset")
      RS.CursorLocation = 3
      RS.CursorType = 3
      RS.ActiveConnection = Cn
      RS.Open strSQL, Cn, 3, 3
      RS.PageSize = 25
      RS.CacheSize = RS.PageSize
      intPageCount = RS.PageCount
      intRecordCount = RS.RecordCount
          If NOT (RS.BOF AND RS.EOF) Then
      If CInt(intPage) > CInt(intPageCount) Then intPage = intPageCount
          If CInt(intPage) <= 0 Then intPage = 1
              If intRecordCount > 0 Then
                  RS.AbsolutePage = intPage
                  intStart = RS.AbsolutePosition
                  If CInt(intPage) = CInt(intPageCount) Then
                      intFinish = intRecordCount
                  Else
                      intFinish = intStart + (RS.PageSize - 1)
                  End if
              End If
          If intRecordCount > 0 Then
              For intRecord = 1 to RS.PageSize
          QntExibicoes = QntExibicoes + Rs.fields("views")
      ...
      %>
       
       
      Já percebi que a função RecordCount não pode ser usada com o MySQL ou pelo menos não é compativel.
       
      A paginação esta funcionando ! 
      Porem , não consigo fazer ele calcular a quantidade de linhas (rows) do MySQL com a função RecordCount e acredito que possa ter alguma outra função que não esta compativel , mas como não conheço MySQL , não posso afirmar.
       
      Enfim, algum pode me dar uma luz ?
       
      Desde já agradeço pela atenção.
       
      Obrigado.
    • By jgasper
      Olá, estou desenvolvendo um sistema de requisições para almoxarifado. Na tela de requisição o usuário terá a opção de incluir o item + quantidade que deseja, e haverá um botão + para poder adicionar mais itens. Porém não consigo pensar em como fazer isso ir para o banco e como salvar isso no pedido. Alguém tem algum exemplo ou pode me ajudar nesse caso?
    • By Sapinn
      Opa galera tudo beleza? Então meu banco está me retomando um erro quando tento inserir nele que é "Dados truncados na coluna valor_produto" essa coluna era do tipo Double quando eu mudei para ela para TEXT funcionou os dados foram inseridos mas eu preciso que ela seja do tipo double. Alguém sabe como resolver????
    • By patrickjnunes1995
      Bom dia, estou tendo dificuldades em recuperar dados de uma tabela do banco de dados, pelo PHP.
      <?php require_once('conexao_bd.php'); $consulta = "SELECT * FROM table"; $con = $mysqli->query($consulta) or die ($mysql->error); echo $dado["nome"]; ?>  
      E o arquivo conexão_bd.php está ok.
       
      Não pude encontrar em nenhuma página pela internet essa solução.
       
      Quero que exiba na página PHP, valores como algum nome, gravado na tabela do banco de dados.
       
      Desde já obrigado.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.