Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, venho novamente esclarecer o meu problema que tem tanto atrapalhado a minha vida!
Um página está fasendo a requisição do banco de dados, mas o conteúdo volta todo sem os acentos, no lugar, uma interrogação. Alguém pode me ajudar?
<?php
include "connect.php";
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
$pag = isset($_GET['pag']) ? $_GET['pag'] : 'inicio';
$sql = mysql_query("SELECT * FROM pages WHERE title = '$pag'");
while($x = mysql_fetch_array($sql)) {
echo $x['body'];
}
?>
</body>
</html>
Imagem do MYSQL
/applications/core/interface/imageproxy/imageproxy.php?img=http://img541.imageshack.us/img541/8069/novaimagemv.jpg&key=ed5a42ec24bfa4daa0929f8201945cf0a1fe7629ed012fce98359af1e71db248" alt="Imagem Postada" />
Resultado
/applications/core/interface/imageproxy/imageproxy.php?img=http://img824.imageshack.us/img824/4171/novaimagem1.jpg&key=c124f511d81519c3689b4352f32a1b281f33e51f15678761b575e04a48ec2c19" alt="Imagem Postada" />
Espero que me ajudem, muito obrigado!
não ficou muito claro! eu disponibilizei a imagem, quais suas conclusões?
tu testou o que eu coloquei , é que a codificação da pagina é diferente do que está armazenada no banco de dados , por isso acontece esses erros , uma opção eh mudar a codificação da pagina ou do banco , a outra é usar o que eu coloquei ai pra ti . :D
Felipe
Mude
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">para
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />desejo exibir as páginas em UTF8! eu criei um novo banco de dados:
CREATE DATABASE teste DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Agora, em vez de exibir uma interrogação, exibe um �
>
Mude
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">para
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
Tive problemas com isso e com o exemplo acima resolveu, eu tentei por meios de funções também, mas achei que o código ficaria muito sujo.
Então optei por meio da tag META.
Valeu!!!!!
Minha solução final foi criar o banco de dados e as tabelas em utf8_unicode_ci, e depois incluir a função na página.
<?php
require ("connect.php");
$sql = mysql_query("CREATE TABLE IF NOT EXISTS `pages` (
`title` VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`body` LONGTEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL)
ENGINE = MyISAM");
$alt = mysql_query("ALTER DATABASE $db DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci");
if($sql and $alt){
echo 'Tabela criada com sucesso!';
}else{
echo 'Ocorreu um erro!';
}
?>
<?php
include "connect.php";
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>
<?php
$pag = isset($_GET['pag']) ? $_GET['pag'] : 'inicio';
$sql = mysql_query("SELECT * FROM pages WHERE title = '$pag'");
while($x = mysql_fetch_array($sql)) {
echo utf8_encode($x['body']);
}
?>
</body>
</html>Mesmo setando o Charset da página para utf-8, o link da conexão como Utf-8 e o charset do Banco de dados também em UTF-8, dependendo das configurações do PHP instalado no servidor pode ser que os caractéres tenham problemas de apresentação.
Para resolver isso devemos alterar o header do php.
Veja a solução completa em :
Corrigindo Problemas com Caractéres Especiais em Charset UTF-8 no PHP
Agora o erro está ocorrendo na hora de mandar a páginas para o mysql!
<?php
include ("connect.php");
if($_SERVER[ 'REQUEST_METHOD' ] == 'POST'){
$title = $_POST['title'];
$body = $_POST['body'];
mysql_query("INSERT INTO pages (title, body) VALUES ('$title', '$body')");
echo 'Página salva com sucesso!';
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Criar Nova Página</title>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="markitup/jquery.markitup.js"></script>
<script type="text/javascript" src="markitup/sets/html/set.js"></script>
<link rel="stylesheet" type="text/css" href="markitup/skins/jtageditor/style.css" />
<link rel="stylesheet" type="text/css" href="markitup/sets/html/style.css" />
<script type="text/javascript">
<!--
$(document).ready(function() {
// Add markItUp! to your textarea in one line
// $('textarea').markItUp( { Settings }, { OptionalExtraSettings } );
$('#markItUp').markItUp(mySettings);
// You can add content from anywhere in your page
// $.markItUp( { Settings } );
$('.add').click(function() {
$.markItUp( { openWith:'<opening tag>',
closeWith:'<\/closing tag>',
placeHolder:"New content"
}
);
return false;
});
// And you can add/remove markItUp! whenever you want
// $(textarea).markItUpRemove();
$('.toggle').click(function() {
if ($("#markItUp.markItUpEditor").length === 1) {
$("#markItUp").markItUpRemove();
$("span", this).text("get markItUp! back");
} else {
$('#markItUp').markItUp(mySettings);
$("span", this).text("remove markItUp!");
}
return false;
});
});
-->
</script>
<script type="text/javascript">
function retirarAcento(objResp) {
var varString = new String(objResp.value);
var stringAcentos = new String('àâêôûãõáéíóúçüÀÂÊÔÛÃÕÁÉÍÓÚÇÜ');
var stringSemAcento = new String('aaeouaoaeioucuAAEOUAOAEIOUCU');
var i = new Number();
var j = new Number();
var cString = new String();
var varRes = '';
for (i = 0; i < varString.length; i++) {
cString = varString.substring(i, i + 1);
for (j = 0; j < stringAcentos.length; j++) {
if (stringAcentos.substring(j, j + 1) == cString){
cString = stringSemAcento.substring(j, j + 1);
}
}
varRes += cString;
}
objResp.value = varRes;
}
</script>
</head>
<body>
<form action="<?php echo $_SERVER[ 'PHP_SELF' ]; ?>" method="post">
<label>Título da Página:</label>
<input name="title" type="text" onChange="javascript:retirarAcento(this);" />
<textarea name="body" id="markItUp" cols="80" rows="20"></textarea>
<input name="" type="submit" value="Cadastrar Página" />
</form>
</body>
</html>
Faz assim Ou tu coloca a função utf8_decode() ou utf8_encode()
utf8_decode
echo utf8_decode($x['body']);
utf8_encode
echo utf8_encode($x['body']);
comigo sempre funciona , mas se nao der , ve em que Encoding ele está , se no teu banco estiver UTF e na pagina ISO tem que modificar , existe varios topicos aqui no forum sobre esse assunto
. Felipe