Jump to content
gersonab

link com caracteres estranhos

Recommended Posts

Bom dia, estou com um problema aqui, reparando um sistema em que neste já se encontram mais de 4000 arquivos cadastrados, só que quem fez não se atentou para os caracteres, já refiz a programação do mesmo e o cadastro esta normal, sendo que praticamente 2800 arquivos foram cadastrados de forma errada, por exemplo:

nome do arquivo cadastrado -> COMUNICAÇÃO.pdf

forma que foi gravada no banco e na pasta ->  COMUNICAÇÃO.pdf

ao clicar para abrir, o mesmo da erro, não é encontrado ->  was not found on this server.

tem alguma maneira de reparar o link sem ter que renomear todos estes arquivos na pasta e no banco de dados ?

Share this post


Link to post
Share on other sites

Aparentemente foi problema de codificação...
Eu iria na linha de renomear... colocaria em foreach o nome de todas as pastas e converteria os nomes para o formato correto e o mesmo faria no banco de dados via update.

 

Agora o "problema" é saber que encode foi aplicado ai para poder fazer um encode em outro charset corretamente

Share this post


Link to post
Share on other sites

antes no banco estava latin1_swedish_ci ou latin1_general_ci e agora em utf8_general_ci

não havia uma codificação na página de upload

agora com codificação total em utf8 não tenho problemas quando se faz o upload, porém tem o problema dos arquivos antigos cadastrados

 

 

Share this post


Link to post
Share on other sites

em pesquisa vi que estes caracteres estão vindo por uma exportação de utf-8 para excel , sem preparar para windows-1052, onde ocasionou estes erros, agora o problema é como reverter

Share this post


Link to post
Share on other sites

No banco de dados foi fácil, exportei normalmente, abri no bloco de notas, salvei como ANSI, depois abri no notpad++ e formatei como UTF8 sem bom, todos os caracteres foral corrigidos, agora como fazer a pasta de arquivos, que estão com os caracteres estranhos nos nomes ?

Share this post


Link to post
Share on other sites

uma solução paliativa foi utilizar mb_convert_encoding

 

mb_convert_encoding($nome, 'Windows-1252', 'UTF-8')

assim não precisei renomear os 2800 arquivos.

Share this post


Link to post
Share on other sites

boa noite, estou reabrindo este tópico pois esta relacionado diretamente a ele, um caso estranho esta acontecendo e não estou conseguindo resolver, conforme relatado acima um problema com gravações de arquivos e seus respectivos nomes no banco de dados, foi acertado o cadastro dos mesmo , ficando todos com seus respectivos caracteres normais, porém hoje me deparei com outro problema, começou a aparecer aquela interrogação no local do caractere , verifiquei no bd e o mesmo esta com sua acentuação normal, o arquivo também esta normal, assim esta minha configuração.

minhas páginas estão com chartset UTF-8 , meu banco esta utf8_general_ci , minha conexão esta 

$pdo = new PDO("xxxxxx(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

não sei o que esta ocorrendo.

para tentar contornar estou usando ..

$cur_encoding = mb_detect_encoding($foto) ;
   if($cur_encoding = "Windows-1252")
   { $fotocerta = mb_convert_encoding($foto, 'Windows-1252', 'UTF-8');
   } elseif($cur_encoding = "ISO-8859-1")
   { $fotocerta = mb_convert_encoding($foto, 'ISO-8859-1', 'UTF-8');
   } else {  $fotocerta = $foto;}

porém o famoso ? continua aparecendo nos cadastros com acentos

Edited by gersonab
novos dados

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 mamotinho
      Olá, gostaria de sabe como posso fazer uma contagem regressiva apartir de um registro em meu banco de dados eu tentei montar um código da seguinte forma:

       
      <? $DateGET = date('m/d/Y H:i A', strtotime($result->DateDiscount)); ?> <script> var valueDate = <?=$DateGET?>; var end = new Date(valueDate); var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; function showRemaining() { var now = new Date(); var distance = end - now; if (distance < 0) { clearInterval(timer); document.getElementById("countdown").innerHTML = "EXPIRED!"; return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); var minutes = Math.floor((distance % _hour) / _minute); var seconds = Math.floor((distance % _minute) / _second); document.getElementById("countdown").innerHTML = "<span class='n_date day' id='days'>" + days + "</span><span class='date'>일</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time hour' id='hrs'>" + hours + "</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time minute' id='minus'>" + minutes + "</span>"; document.getElementById("countdown").innerHTML += "<span class='n_time second' id='secs'>" + seconds + "</span>"; } timer = setInterval(showRemaining, 1000); </script> Mais infelizmente não passou a data registrada no banco de dados, alguém teria ideia de como posso ta fazendo.
    • By emmanuelsiqueira30
      Pessoal preciso de uma ajudinha aqui se alguém puder me ajudar fico muito agradecido.
      O problema é o seguinte gostaria de editar dados de um formulário com checkbox usando html e php.
      Desde já agradeço por toda ajuda.
    • By liniker.o
      Boa tarde pessoal!
      Estou com um problema em meu código quando coloco uma referencia de fonte a mesma não carrega, quando faça o mesmo procedimento local colocando os caminhos de pasta funciona normalmente.
      Será que alguém poderia me ajudar?
      Segue o código.
      <html> <head> <title>Minha pagina</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <!-- Se não declarar charset por meta, envie um header de igual valor --> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <?php //Carregar imagem tamanho da imagen = 515x76 $img = ImageCreateFromJPEG("base.jpg"); //Definir cor $cor1 = imagecolorallocate($img, 0, 0, 0); $cor2 = imagecolorallocate($img, 0, 0, 0); // carregar fonte... $fonte1 = 'https://ff.static.1001fonts.net/r/o/roboto-condensed.light.ttf'; $fonte2 = 'https://ff.static.1001fonts.net/r/o/roboto-condensed.light.ttf'; //Escrever nome $txtNome = $_POST['nome']; $txtFuncao = $_POST['func']; $txtEmail = $_POST['email']; $txtDDD = "+55 ".$_POST['telefone']; // IMAGEM, TAMANHO_FONTE, 0, POSICAO X, posicao Y, TEXTO_COR, ARQ_FONTE, TEXTO imagettftext($img, 32, 0, 250, 100, $cor1, $fonte1, $txtNome); imagettftext($img, 18, 0, 250, 125, $cor1, $fonte2, $txtFuncao); imagettftext($img, 18, 0, 250, 150, $cor1, $fonte2, $txtEmail); imagettftext($img, 18, 0, 250, 180, $cor1, $fonte2, $txtDDD); //Header e output header('Content-type: image/jpeg'); imagejpeg($img,"Assinatura - ".$txtNome.".jpg"); imagedestroy($img); header('Location: Assinatura - '.$txtNome.'.jpg'); ?>  
    • By gersonab
      Boa tarde a todos, tenho um sistema de upload de arquivos que funciona perfeitamente, agora eu gostaria que estes arquivos fossem armazenados em nuvem, não no servidor, poderiam indicar um tutorial ou como proceder.
×

Important Information

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