Jump to content
reis77

Erro de ortografia no banco de dados !

Recommended Posts

Fala pessoal, estou ultimamente com um probleminha em um projeto no qual estou desenvolvendo e queria contar com o conhecimento de vocês para poder me ajudar.
Então, eu fiz uma conexão com o banco de dados mysql PDO e quando o projeto inseri conteúdo lá ele aparece com caracteres estranhos no lugar de acentuações.

Já fiz alguns procedimentos, mas não sei onde estou errando !

 

A arquitetura do bando de dados.

 

<?php
ob_start();

try {

    $con = new PDO("mysql:dbname=buscador2;host=localhost", "root", "",
     array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
catch(PDOExeption $e) {
     echo "Connection failed: " . $e->getMessage();
}
?>

 

 

Share this post


Link to post
Share on other sites

Esses problemas de acentuações podem ser facilmente resolvidos usando a codificação UTF-8.

 

Certifique que na head esteja corretamente o charset.

<meta charset="UTF-8">

Vale lembrar que o banco de dados também pode ser adaptado para conter caracteres corretamente em utf-8.

DROP TABLE IF EXISTS `tabela`;
CREATE TABLE `tabela` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `nome` varchar(50) DEFAULT NULL COMMENT 'um nome que pode conter acentos',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

 

Quando salvar codifique a string conforme a codificação.

$texto = utf8_encode('João');

O que vai fazer com que a variável texto fique assim: João

Salvamos então essa variável na coluna.

Quando fomos exibir o valor da coluna decodificamos:

utf8_decode($valor_da_coluna_vinda_da_query);

No caso do texto será mostrado: João

 

Também podemos usar entidades ao invés da codificação (Eu prefiro isso porque da menos trabalho e funciona independente da codificação).

$texto = htmlentities('João');

O que vai gerar uma string assim: Jo&atilde;o

Não há necessidade de pós exibição pois por ser uma entidade o browser já entende e mostra &atilde; como uma letra a com acento tio.

 

Caso seja nessessário lhe mostro essa classe que fiz para tratamento de strings em situação de manuseio da codificação.

Spoiler

<?php
/**
 * ********************************************
 * @author Spell Master "Omar Pautz"
 * ********************************************
 * @Class: Trata string para proteção de dados
 * ********************************************
 */

class strCode {

    private $data;

    /**
     * ****************************************
     * Mapa de caracteres expeciais HTML
     * ****************************************
     * @return {array} Valores e ìndices.
     * ****************************************
     */
    private function charsCode() {
        return ([
            '&Aacute;' => 'Á', '&aacute;' => 'á', '&Agrave;' => 'À', '&acirc;' => 'â', '&Aring;' => 'Å', '&agrave;' => 'à', '&Atilde;' => 'Ã', '&aring;' => 'å', '&Auml;' => 'Ä', '&atilde;' => 'ã', '&Auml;' => 'Ä', '&auml;' => 'ä',
            '&Eacute;' => 'É', '&eacute;' => 'é', '&Ecirc;' => 'Ê', '&ecirc;' => 'ê', '&Egrave;' => 'È', '&egrave;' => 'è', '&Euml;' => 'Ë', '&euml;' => 'ë',
            '&Iacute;' => 'Í', '&iacute;' => 'í', '&Icirc;' => 'Î', '&icirc;' => 'î', '&Igrave;' => 'Ì', '&igrave;' => 'ì', '&Iuml;' => 'Ï', '&iuml;' => 'ï',
            '&Oacute;' => 'Ó', '&oacute;' => 'ó', '&oacute;' => 'ó', '&Ocirc;' => 'Ô', '&ocirc;' => 'ô', '&Ograve;' => 'Ò', '&ograve;' => 'ò', '&Otilde;' => 'Õ', '&otilde;' => 'õ', '&Ouml;' => 'Ö', '&ouml;' => 'ö',
            '&Uacute;' => 'Ú', '&uacute;' => 'ú', '&Ucirc;' => 'Û', '&ucirc;' => 'û', '&Ugrave;' => 'Ù', '&Ugrave;' => 'Ù', '&ugrave;' => 'ù', '&Uuml;' => 'Ü', '&uuml;' => 'ü',
            '&Ccedil;' => 'Ç', '&ccedil;' => 'ç',
            '&Ntilde;' => 'Ñ', '&ntilde;' => 'ñ',
            '&Yacute;' => 'Ý', '&yacute;' => 'ý',
            '&amp;lt;' => '&lt;', '&amp;gt;' => '&gt;',
            '&amp;' => '&',
            '&quot;' => '"',
        ]);
    }

    /**
     * ****************************************
     * Escapa entradas html.
     * Remove qualquer atributo começando
     * com "on" ou xmlns.
     * Remove os protocolos javascript e
     * vbscript.
     * Remove expressões PING
     * Remova os elementos de espaço para
     * nome (não precisamos deles).
     * ****************************************
     * @param {STR} $data
     * String para conversão.
     * ****************************************
     */
    public function removeXSS($data) {
        $this->data = str_replace(['&amp;', '&lt;', '&gt;'], ['&amp;amp;', '&amp;lt;', '&amp;gt;'], $data);
        $this->data = preg_replace('/(&#*\w+)[\x00-\x20]+;/u', '$1;', $data);
        $this->data = preg_replace('/(&#x*[0-9A-F]+);*/iu', '$1;', $data);
        $this->data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');

        $this->data = preg_replace('#(<[^>]+?[\x00-\x20"\'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);

        $this->data = preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([`\'"]*)[\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2nojavascript...', $data);
        $this->data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iu', '$1=$2novbscript...', $data);
        $this->data = preg_replace('#([a-z]*)[\x00-\x20]*=([\'"]*)[\x00-\x20]*-moz-binding[\x00-\x20]*:#u', '$1=$2nomozbinding...', $data);

        $this->data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?expression[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $this->data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?behaviour[\x00-\x20]*\([^>]*+>#i', '$1>', $data);
        $this->data = preg_replace('#(<[^>]+?)style[\x00-\x20]*=[\x00-\x20]*[`\'"]*.*?s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:*[^>]*+>#iu', '$1>', $data);

        $this->data = preg_replace('#</*\w+:\w[^>]*+>#i', '', $data);
        $this->data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);

        return($this->data);
    }

    /**
     * ****************************************
     * Executa conversão de caracteres
     * expeciais HTML.
     * ****************************************
     * @param {STR} $htmlChar
     * Texto para fazer a conversão.
     * @return {BOOL}
     * Retorna texto convertido se existente
     * ou nada.
     * ****************************************
     */
    public function spelcialChar($htmlChar) {
        $text = (string) utf8_encode($htmlChar);
        return (strtr($text, self::charsCode()));
    }
}

 

 

 

Share this post


Link to post
Share on other sites
3 horas atrás, Omar~ disse:

<meta charset="UTF-8">

Eu coloquei isso em todas as páginas necessárias, eu estou baixando arquivos de sites para o meu banco de dados e alguns sites com títulos e descrições estão assim, com caracteres errados como esse (vocú) e eu já coloquei o UTF8 padrão no banco de dados, estou utilizando um crawler para baixar os arquivos.

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 juliosertori
      Opa tudo bem?
       
      Tenho uma query que agrupa por CIDADE, o problema é que o cliente pode digitar a cidade, então as vezes digita com e sem caracter especial, por exemplo: São Paulo, e Sao Paulo, como posso agrupar os 2?
       
      "SELECT sum(p.total_pedido) as totalpedidos, p.id_empresa, p.id_cliente, c.id, c.cidade FROM pedidos AS p JOIN clientes AS c ON p.id_cliente = c.id WHERE p.id_empresa = '".$_CPD['CompanyId']."' AND p.finalizado = '1' AND MONTH(p.data_pedido) = '$mes_atual' group by c.cidade order by totalpedidos desc limit 0,10"  
    • By mateusmarcucci
      Pessoal, meu primeiro tópico, então desculpa qualquer coisa...
       
      É o seguinte, pra treinar to criando um sisteminha de aposta.
       
      Consiste em 2 campos, Valor apostado e ODD (odd é o quanto vai multiplicar a aposta caso ganhe). Porém quero colocar uma telinha aonde ele vai somar todos os ganhos e perdas do dia.
       
      Estou fazendo a soma direto no php, porém gostaria de passar o resultado dessa soma no banco de dados para assim ser possível somar as colunas.
       
      Eu tenho o metodo de escolha que é Ganhou ou Perdeu.
       
      Exemplo:   Valor apostado: R$5,00 | ODD 2.0 = R$10,00     Porém o lucro é apenas R$5,00. Tendo em vista que o lucro é subtraído do valor total - valor apostado. Caso perca, o valor apostado apenas passa a ser negativo
       
      Vou deixar o código que estou utilizando:
       
       
       
      <?php
          session_start();
          include_once("servidor.php");

          if (!empty($_SESSION['usuario']) and !empty($_SESSION['id'])) {
              $id = $_SESSION['id'];
              $nome = $_SESSION['nome'];
              $usuario = $_SESSION['usuario'];
          }else{
              $_SESSION['mensagem']="Você não está logado";
              header("Location: index.php");
              exit;
          }
          $id = $_SESSION['id'];        
          $consulta = "SELECT * FROM Resultados WHERE id = '$id' ORDER BY resultado ASC";
          $con = mysqli_query($conexao, $consulta);
          $banca = "SELECT * FROM Usuarios";
          $conBanca = mysqli_query($conexao, $banca);
          
      ?>

      <!DOCTYPE html>
      <html>
      <head>
          <title>Anote sua Aposta - Painel</title>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <link rel="stylesheet" type="text/css" href="css/cssEstilo.css">

          <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
          <!-- Font Awesome -->
          <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
          <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
          <script type="text/javascript" src="js/bootstrap.min.js"></script>
          <script type="text/javascript" src="js/jquery.mask.min.js"></script>
          <script type="text/javascript">
                  $(document).ready(function(){
                      $("#valor").mask("99990.00", {reverse: true})    
                      $("#odd").mask("999.999.990.00", {reverse: true})
                      
                  })        
                      
          </script>
      </head>

      <body class="fundoBodyPainel">
          <!-- topo -->
          <?php include('topo.php'); ?>
          <!-- fim topo -->
          <section>                        
                  <nav>
                      <p class="topoPainel"><strong>Bem vindo(a),</strong> <?php echo $_SESSION['nome'];?></p>
                  </nav>
          </section>
          <!-- Botão para acionar modal -->
          <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modalExemplo">
                Adicionar uma nova aposta
          </button>
          <!-- Modal -->
          <div class="modal fade" id="modalExemplo" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
            <div class="modal-dialog" role="document">
              <div class="modal-content">
                <div class="modal-header">
                  <h5 class="modal-title" id="exampleModalLabel">Adicionar uma nova aposta</h5>
                  <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
                    <span aria-hidden="true">&times;</span>
                  </button>
                </div>
                <div class="modal-body">
                  <section>
                      <div>
                          <form action="validarResultado.php" method="get" accept-charset="utf-8">
       
                                    <div class="form-group">
                                      <label>Valor Apostado:</label>
                                      <input type="text" class="form-control" id="valor" placeholder="Valor Apostado"
                                          name="valor">        
                                    </div>

                                    <div class="form-group">
                                      <label>ODD:</label>
                                      <input type="text" class="form-control" id="odd" placeholder="ODD" name="odd">                
                                   </div>
                                    <div class="form-group">
                                        <label for="Resultado">Resultado</label>
                                        <select id="inputEstado" class="form-control" name="resultado">
                                          <option selected>Escolher...</option>
                                          <option>Ganhou</option>
                                          <option>Perdeu</option>
                                        </select>
                                  </div>
                                </div>
                                    <button id="botaoCadastro" type="submit" name="enviar" class="btn btn-danger">Cadastrar</button>
                              </form>
                      </div>
                  </section>
                </div>
              </div>
            </div>
          </div>

          <section class="containerContatos">
              <div class="container">
                  <div class="row">
                      <div class="col-md-12">
                          <div class="d-flex justify-content-center table-responsive">
                              <table class="table table-striped" style="background: white;">
                                <thead class="thead-dark">
                                  <tr>
                                    <th scope="col">Valor</th>
                                    <th scope="col">ODD</th>
                                    <th scope="col">Resultado</th>
                                    <th scope="col">ID Aposta</th>
                                    <th scope="col">Retorno</th>
                                  </tr>
                                </thead>
                                <tbody>
                                    <?php
                                      while($dado = mysqli_fetch_assoc($con)) {
                                  ?>
                                  <tr>
                                    <td><?php echo $dado["valor"]; ?></td>
                                    <td><?php echo $dado["odd"]; ?></td>
                                    <td><?php echo $dado["resultado"]; ?></td>
                                    <td><?php echo $dado["idAposta"]; ?></td>
                                    <td><?php    
       
                                                $opcao1 = $dado["resultado"];                                                                                
                                                if ("$opcao1" == 'Ganhou') {
                                                    $retorno = ($dado["valor"] * $dado["odd"]) - $dado["valor"];
                                                    $retorno1 = $retorno;
                                                  $retorno1 = number_format($retorno1, 2, '.', '');
                                                  $retorno4 = $retorno;
                                                    echo "$retorno1";
                                                }
                                                if ("$opcao1" == 'Perdeu') {
                                                    $retorno = ($dado["valor"] - $dado["valor"]) - $dado["valor"];
                                                    $retorno1 = $retorno;
                                                  $retorno1 = number_format($retorno1, 2, '.', '');
                                                  $retorno4 = $retorno;
                                                    echo "$retorno1";
                                                }
                                                
                                            ?>                                          
                                    </td>                          
                                    </td>
                                  </tr>                            
                                  <?php } ?>
                                </tbody>
                              </table>
                          </div>
                      </div>
                  </div>
              </div>
          </section>    

          <?php  ?>
          

          
          <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
          <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
      </body>

      </html>
    • By ismaelfiorotti
      Olá, Bom Dia! Estou fazendo um sistema de busca avançada no PHP, estou precisar fazer uma pesquisa onde coloco mais de 1 opção para busca.
      OBS:
      - $buscaExata = no valor padrão ele é AND, quando eu marco ele altera para OR
      - eu preciso fazer um tipo de busca onde se eu colher a localidade e a equipe ele me mostre somente com essas duas condições!
      - com certeza meu codigo esta errado e não estou conseguindo fazer a logica dessa pesquisa
      - se eu selecionar todos os campos ele funciona,. porem quero só buscar 2 condições ou 3 condições não todas.
       
      CODIGO PRA BUSCA QUE TENHO
       
      $trechoPesquisa = filter_input(INPUT_POST, "trechoPesquisa"); $statusPesquisa = filter_input(INPUT_POST, "statusPesquisa"); $dataInicialPesquisa = filter_input(INPUT_POST, "dataInicialPesquisa"); $dataFinalPesquisa = filter_input(INPUT_POST, "dataFinalPesquisa"); $localidadePesquisa = filter_input(INPUT_POST, "localidadePesquisa"); $idEquipePesquisa = filter_input(INPUT_POST, "idEquipePesquisa"); $buscaExata = filter_input(INPUT_POST, "buscaExata" ); if(!$buscaExata){$buscaExata = 'OR';} $busca_query = $con->prepare("SELECT * FROM eventos WHERE status LIKE '%$statusPesquisa%' $buscaExata localidade LIKE '%$localidadePesquisa%' $buscaExata idEquipe LIKE '%$idEquipePesquisa%' $buscaExata dataEvento BETWEEN '$dataInicialPesquisa' AND '$dataFinalPesquisa'"); PRINT DA MINHA TELA DO FILTRO
       

    • By Carlos Web Soluções Web
      Olá !!

      Estou seguindo um tutorial de Node.js, estou na parte de MySQL e estou tentando efetuar o seguinte código:

      demo_create_db.js:

       
      var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "Legendary003", password: "password" }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); con.query("CREATE DATABASE mydb", function(err, result) { if (err) throw err; console.log("Database created"); }); }); Está retornando erro da imagem abaixo:

      Imagem do Erro !!
    • By Alberto Nascimento
      Tenho um formulário de Upload e preciso salvar o "valor" gerado e exibido através do "echo" :
       
      echo "<img src=\"" . $destino . "\" />";  
      Como faço para salvar no campo "novonome" da tabela?
×

Important Information

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