Jump to content

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


TheOne
 Share

Recommended Posts

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

Link to comment
Share on other sites

É provável que tenhas de voltar a inserir os conteúdos na base de dados para que funcione.

Quanto ao max, não sei se foi exemplo escrito aqui ou não, mas tens um error aqui :

$max = mysql_fetch_assoc(&rs);

De qualquer modo, corre os resultados com um ciclo, é mais fiável.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Eu meto latin1_sw..

E na pag utf-8..

E não tenho problemas desses :S

Pelo menos por enquanto 😛

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

Tenta pode ser que de..

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

Cumpz...

Link to comment
Share on other sites

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:

Link to comment
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
 Share

×
×
  • Create New...

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.