Ir para conteúdo

POWERED BY:

Arquivado

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

tounoosso

Problema de Acentuação

Recommended Posts

Se não entender o que é e como funciona, sempre terá esse problema básico com charset.

 

Este tópico é do tipo que se estenderá por centenas de posts no qual cada um diz uma coisa diferente sem nem ao menos diagnosticar ou entender o que acontece.. Aí vc vai aplicando os palpites e com isso pode ir complicando ainda mais o que já está complicado.. Muitas vezes tornando até irreversível como corrompimento de dados.

 

 

Isso pode ser útil: http://forum.imasters.com.br/topic/340459-php-html-mysql-charset-encoding/

Note que o tópico não é "a solução definitiva" para o "seu caso específico".

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

OLha..

 

Ponto 1 - Está claro que o erro esta no armazenamento dos dados.. então pode afunilar suas dúvidas no script php..

Ponto 2 - eu continuo a pensar que o erro esta nas funções tag e slug

 

Pensemos:

  1. se sua página esta em uft8 e seu formulário esta usando enctype, isso significa que quando os dados saem do form html para o script php ele já sai codificado.
  2. dai o php pega e codifica de novo.. ou seja.. provavelmente n ta dando nada certo pq seus dados estao sendo codificados 2 vezes.. uma pela propria definição na página e outra no tratamento pelo script php...
  3. dai quando vc retoma os dado do banco de dados vc decodifica uma só vez.. pode ser ai a pala...

 

Faz assim.. deixe as funções tag e slug sem tratar os dados para ver q q acontece...

 

function slug($string){
/*
$a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ"!@#$%&*()_-+={[}]/?;:.,\\\'<>';
$b = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr                              ';
$string = utf8_decode($string);
$string = strtr($string, utf8_decode($a), $b);
$string = strip_tags(trim($string));
$string = str_replace(" ","-",$string);
return strtolower(utf8_encode($string));
*/
return $string
}


function tag($string){
/*
$a = 'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜüÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿŔŕ"!@#$%&*()_-+={[}]/?;:.\\\'<>';
$b = 'aaaaaaaceeeeiiiidnoooooouuuuuybsaaaaaaaceeeeiiiidnoooooouuuyybyRr                             ';
$string = utf8_decode($string);
$string = strtr($string, utf8_decode($a), $b);
$string = strip_tags(trim($string));
return strtolower(utf8_encode($string));
*/
return $string
}
?>

 

A questão é que esse script é para fazer o link dinâmico... por exemplo... "Esta é uma postagem = esta-e-uma-postagem".. a questão é que, se não for assim, como posso fazer um cadastro com link dinâmico?... Estava seguindo uma video aula daquele campus upinside mas ja procurei la e esse problema aparece resolvido em uma outra aula, sem apresentar solução =/

 

Só uma ressalva, quanto ao script de cadastro, se eu deixo o charser=utf-8 funciona perfeitamente só que como eu disse antes, o título das páginas que ja estão cadastrados perdem a formatação sozinhos... Mesmo com o BD em formato utf-8

 

Esse é o script que eu uso para puxar o título e as metas do banco de dados

 

<?php function get_titulo(){
$url = $_GET['url'];
$urlE = explode('/', $url);
$arquivo = $urlE['0'];
$post    = $urlE['1'];

$paginas = array('empresa', 'servicos', 'contato');

if(isset($post) && $post != ''){
	$sql = mysql_query("SELECT * FROM posts WHERE tituloSlug = '$post'") or die(mysql_error());
		while($res = mysql_fetch_array($sql)){
			$titulo = $res['titulo'];
	echo 'InoveStudio - '.$titulo;
	}
	

}elseif(isset($arquivo) && $arquivo == 'loja'){
	$sql = mysql_query("SELECT * FROM seo_empresa") or die(mysql_error());
		while($res = mysql_fetch_array($sql)){
			$titulo = $res['titulo'];
		echo $titulo;	
}

}elseif(isset($arquivo) && $arquivo == 'servicos'){
	$sql = mysql_query("SELECT * FROM seo_servicos") or die(mysql_error());
		while($res = mysql_fetch_array($sql)){
			$titulo = $res['titulo'];
		echo $titulo;
}

}elseif(isset($arquivo) && $arquivo == 'contato'){
	$sql = mysql_query("SELECT * FROM seo_contato") or die(mysql_error());
		while($res = mysql_fetch_array($sql)){
			$titulo = $res['titulo'];
		echo $titulo;
}

}elseif(isset($arquivo) && $arquivo == ''){
	$sql = mysql_query("SELECT * FROM seo_home") or die(mysql_error());
		while($res = mysql_fetch_array($sql)){
			$titulo = $res['titulo'];
		echo $titulo;
}

}elseif(isset($arquivo) && $arquivo == 'produtos'){
	$sql = mysql_query("SELECT * FROM seo_portifolio") or die(mysql_error());
		while($res = mysql_fetch_array($sql)){
			$titulo = $res['titulo'];
		echo $titulo;
}
 
 }
}
?>

Olhando pelo Notepad++ o arquivo que contem essa codificação está no formato "ANSI" e por mais que eu tente converter ele para "UTF-8 SEM BOM" ele não converte... será que pode ser esse o problema?

 

Para puxar os titulos eu insiro direto no banco de dados, não uso cadastro nem nada, só busco os dados la dentro e exibo.. então la tem "Ç, ã, é, á" e por aí vai nos acentos...

 

Alguem poderia dizer onde posso ver scripts que ensinem a criar uma url amigavel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ué, mas claro que vai funcionar. Se o seu código está em ISO-8859-1, e você está dizendo para o navegador que é UTF-8, vai dar erro ué. O navegador vai tentar decodificar como UTF-8 um código que está em ISO-8859-1.

 

Mas você vai manter o banco em UTF-8 e a página em ISO-8859-1? Você deveria colocar tudo igual, página e banco, senão, você vai ter problemas ao inserir dados no banco. Você estará inserindo em ISO-8859-1 e o banco vai estar em UTF-8. Um dia, quando você for utilizar esse banco em outra aplicação que seja UTF-8, vai dar erro.

 

Você precisa ser coerente com as codificações. É como o supertelnet falou, mantenha tudo igual. Se você quer manter o UTF-8 e resolver o problema do título, faz assim: Muda a codificação do seu editor para UTF-8 (sem BOM, porque esse BOM atrapalha na programação), depois disso apaga o seu título e escreve denovo.

 

Embora para textos literais, ou seja, que ficam fixos na página o ideal é você usar entities do HTML, como o KhaosDoctor sugeriu: título.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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