Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
TheOne

[SEMI-RESOLVIDO] Codificação de caracteres PHP & MySQL

Recommended Posts

TheOne

Boas pessoal, cá vai mais uma dúvida...

Estou com um problema com os caracteres denominados latinos (ç, á, ã, õ, é, etc...). Na minha base de dados os campos têm codificação utf8_unicode_ci e no código php tenho por exemplo

GetSQLValueString(utf8_encode($_POST['servicos']), "text")

em que o campo 'servicos' vem de uma textarea.

O problema é que por mais voltas que dê os tais caracteres ficam sempre marados na base de dados...

Já agora, mais uma dúvida. Quero obter o máximo de um campo numérico. Faço "SELECT MAX(num) AS numMax FROM folha WHERE numCliente=1" (exemplo). Depois executo a query e obtenho o resultset. Faço:

$max = mysql_fetch_assoc(&rs);

$n = $max['numMax'];

só que não consigo obter nenhum valor...e o numCliente que procuro existe. Estou a extrair mal o valor do result set?

Alguém me pode dar uma ajudinha?

Cumps e obrigado

Share this post


Link to post
Share on other sites
tuxonice

Boas

se estás a utilizar unicode na base de dados tens de enviar os dados em UTF-8.

Experimenta executar este query logo após abrires a ligação à base de dados: "SET NAMES 'utf8'"

Tux

Share this post


Link to post
Share on other sites
TheOne

O HTML está com encode utf-8

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Share this post


Link to post
Share on other sites
TheOne

Não dá,"é" fica "é"... também já experimentei fazer SET NAMES...

Cumps

P.S. E quanto à questão do MAX alguma ideia?

Share this post


Link to post
Share on other sites
TheOne

Boas pessoal, já resolvi parcialmente o problema com o utf8_decode e colocando os campos da BD em UTF8_bin. Está tudo a funcionar bem só que às vezes acontece uma coisa esquisita...por exemplo, os caracteres estão todos bem depois entro num secção da página em que adiciono qq coisa à BD e volto atrás com o redirect após o INSERT. Mas quando a página anterior carrega os caracteres que estavam bem passam a ficar marados e o resto das páginas do site fica assim com os chars marados e isso só passa se fizer muitas vezes refresh à página (e nem sempre resulta...)

Alguma sugestão para enxotar estas bruxas que para aqui andam? :)

Cumps

Share this post


Link to post
Share on other sites
TheOne

Pessoal, ainda tenho o problema dos caracteres de vez em quando. Descobri que tinha umas incompatibilidades de codificação entre a página e a BD e já corrigi pelo que os dados estão a ser sempre bem inseridos na BD.

Só que às vezes a ler os dados os caracteres especiais vêm mal (com um ponto de interrogação dentro de um losango), fazendo refresh várias vezes resolve mas não deixa de ser irritante.

Alguma sugestão? Isto não pode ficar assim :

Cumps

Share this post


Link to post
Share on other sites
NaDa

Eu meto latin1_sw..

E na pag utf-8..

E não tenho problemas desses :S

Pelo menos por enquanto :P

Na base de dados, sim, aparece tudo maluco, mas ao ler aparece direito :D

Tenta pode ser que de..

E uma das coisas que nunca andei a ver, quando comecei fizeram me assim, ficou sempre assim :)

Cumpz...

Share this post


Link to post
Share on other sites
TheOne

Pois, eu tenho UTF-8 na página e na BD, aparece tudo direitinho na BD os acentos e tudo. Na página também aparece tudo bem, só às vezes é que fica marado e é preciso fazer um carradão de refreshs....

Cumps

Share this post


Link to post
Share on other sites
TheOne

Bom, já coloquei a BD como latin1_swedish e a página com ISO-8859-1.

Reforcei ainda com o header php a forçar charset ISO-8859-1 e a forçar o mySQL com o SET NAMES 'ISO-8859-1'.

Os dados aparecem bem tanto na BD como na página, só que às vezes aparecem mal na página e com uns refreshs consigo fazer com que fiquem bem. Mas isto era suposto funcionar sempre a 100%, o que é q estou a fazer mal aqui? Será que colocar o charset ISO-8859-1 no header do HTML e no header do PHP assim como fazer o SET NAMES para ISO-8859-1 faz tipo uma descodificação tripla dos dados e acaba por corrompe-los?

Ou terei de colocar o header PHP antes de qualquer código de leitura da base de dados? É que coloquei o header PHP no final do código php mesmo antes do html começar...

Mas continuo sem perceber porque é que o UTF-8 não dava...supostamente UTF-8 suporta todos os caracteres e mais alguns...

Obrigado pela ajuda pessoal,.

Cumps  :drunk:

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
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.