Ir para conteúdo

POWERED BY:

Arquivado

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

drk7

[Resolvido] PHP e Codificação do BD

Recommended Posts

Oi.

Já passei por um problema assim antes, mas consegui resolver.

Só que agora, não tem jeito.

Todo banco de dados e páginas estão codificadas como utf8, só que ao receber os dados do banco os dados não estão codificados como utf8, pois se eu uso utf8_encode() funciona. A questão é que eu não queria usar, pois teoricamente deveria funcionar (como funcionou no outro projeto).

De resto toda acentuação vinda do html ou de echo funciona. Só os dados do bd que não.

Alguma luz? Agradeço que ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe codificação do banco, codificação da tabela e codificação de campo. Verifique se está tudo em urf-8 mesmo

 

Se o problema são apenas os dados do banco, content-type não vai resolver, pois vai corrigir os dados vindos do banco, mas estragar os dados exibidos na página, escritos diretamente no .php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo como utf8. Content-type, página mesmo codificada em utf8 e banco de dados (utf8_unicode_ci).

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

set names 'utf8'

 

Oi Evandro.

O BD já está todo codificado como DEFAULT CHARSET=utf8 COLLATE utf8_unicode_ci.

O que alteraria em cima do charset já setado esse set names utf8?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha no rodapé do seu editor o enconding do arquivo .php

 

Se está ANSI, UTF8 ou outro.

 

Coloquei antes: Tudo como utf8. Content-type, página mesmo codificada em utf8 e banco de dados (utf8_unicode_ci).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como diria o Desnickadu: "Sem teste, sem ajuda".

 

Eu tentei, mas nunca tinha ouvido falar disso. E pelo que eu li não faria sentido se eu já tivesse usando utf8.

Tentei assim, mas deu erro de sintaxe:

CREATE DATABASE IF NOT EXISTS DATABASE1  DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci SET NAMES utf8 COLLATE utf8_unicode_ci;
USE DATABASE1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei assim. Não adiantou. O server é contratado.

CREATE DATABASE IF NOT EXISTS DB1  DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE DB1;
SET character_set_connection = utf8;
SET character_set_server = utf8;
SET character_set_client = utf8;
SET character_set_results = NULL;
SET NAMES utf8 COLLATE utf8_unicode_ci;

Compartilhar este post


Link para o post
Compartilhar em outros sites
$conn = mysql_connect($host,$username,$password) or die(mysql_error());
$db = mysql_select_db($database,$conn) or die(mysql_error());

mysql_query("SET NAMES 'utf-8';");

$query = "SELECT * FROM `{$tabela}`";

$sql = mysql_query($query) or die(mysql_error());

foreach($sql as ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

$conn = mysql_connect($host,$username,$password) or die(mysql_error());
$db = mysql_select_db($database,$conn) or die(mysql_error());

mysql_query("SET NAMES 'utf-8';");

$query = "SELECT * FROM `{$tabela}`";

$sql = mysql_query($query) or die(mysql_error());

foreach($sql as ...

 

Coloquei assim nas consultas e continua na mesma. Não vai em utf8 os dados.

Mas se eu fizer na volta dos dados do bd utf8_encode(campo) funciona.

Não sei mais o que fazer. Acho que vou ter que usar isso, embora não queria.

 

Alguma outra idéia?

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.