Ir para conteúdo

POWERED BY:

Arquivado

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

-rafael-

problemas com codificação utf-8

Recommended Posts

ola,

 

estou tendo um problema com a codificação utf-8.

 

eu sempre usei a latin-1, mas resolvi mudar.

 

mas na hora q fui conferir os dados gravados no banco, aparecem assim

 

SÃO JOSÉ DO RIO PRETO - SP

por que isso acontece?

 

obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas atenção: nos arquivos HTML não basta adicionar a meta tag informando o charset, o arquivo precisa ser valco com essa codificação também. No caso do PHP, adicione o seguinte:

header("Content-Type: text/html; charset=utf-8");
Além disso, não se esqueça de, na hora de salvar o arquivo, escolher a codificação correta também (até no bloco de notas isso é possível... :assobiando:). Verifique também se os arquivos HTML estão todos como UTF-8 mesmo, pois, como disse, só a meta tag às vezes não é suficiente, já vi situações em que o charset estava correto, mas o arquivo não estava salvo com a mesma codificação.

 

 

:joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso todos os arquivos do meu sistema eu salvo como '.php'.

 

estou usando o dreamweaver, e salvo os arquivos com utf-8 e com a assinatura unicode (BOM).

 

mas estou tendo dificuldades para fazer aparecer os dados corretamente no meu sistema.

 

e agora para gravar tambem.

 

como devo colocar codigo acima q você passou?

 

obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tentei aqui e nao consegui

 

ainda ta gravando errado no banco!

 

e agora?

 

tem problema deixar em latin-1?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Estou tendo o mesmo problema. E não acho o problema, gostaria de ajuda.

Banco de dados:

CREATE TABLE document (
   id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
   unicodeText VARCHAR(45) NOT NULL
) CHARACTER SET utf8 COLLATE utf8_general_ci;

 

HTML:

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

 

Para garantir, coloquei até no PHP:

# Informa qual o conjunto de caracteres será usado.
header('Content-Type: text/html; charset=utf-8');

 

Os dados na página são exibidos corretamente, porém quando dou um INSERT fica tudo zuado.

Insiro isto: aã cç eé oõ ií uú eê aâ oô

No banco salva isso: aã cç eé oõ ií uú eê aâ oô

 

Depurei minha string SQL que faz a inclusão no banco e ela está vindo assim:

INSERT INTO anunciantes SET
tipo_id			= 1
, RazaoSocial	        = ''
       , Nome			= 'aã cç eé oõ ií uú eê aâ oô'
, Descricao		= 'aã cç eé oõ ií uú eê aâ oô'
, Email			= ''
, CEP			= '92111333'
, Endereco		= 'R. Marques 100'
, Complemento	        = ''
, Bairro		= 'N. Sra. das Graças'
, cidade_id		= 09
, subcategoria_id       = 034
, CPF			= ''
, CNPJ			= ''

 

Olhei este link como referência, porém já sabia disso. Não estou entendo o motivo do problema. Realmente preciso de ajuda. Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No momento vi que o problema está somente quando envio os dados pelo método POST (quando faço um update/insert no banco).

Logo, resolvi fazendo isso: http://alberane.wordpress.com/2008/02/14/problemas-com-uft-8-e-iso8859-1-em-phpmysql/

mysql_query("SET NAMES 'utf8';");

 

Com isso os dados trafegados entre sua página e o servidor mysql não serão codificados/decodificados para conjunto de caracteres estranhos e tudo fica UTF-8!!!

PORÉM, CREIO QUE ESSA NÃO SEJA A SOLUÇÃO MAIS APROPRIADA.

Se alguém souber, agradeço de coração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existem várias funções que depuram caracteres de todos os formatos convertendo para caracteres compreensíveis em html.

utf8_encode();

htmlentities();

htmlspecialchars();

 

 

porém pelo que entendi.

o problema todo não são os dados que aparecem para o usuário e sim como aparecem no base.

Porém pergunto. Qual diferença isso faz?

quero dizer, você envia algo pro banco :

ex:

<?php
$nome = htmlentities($_POST['nome']);
$login = htmlentities($_POST['login']);
$sql = mysql_query("insert into `tabela` (`nome`,`login`)VALUES ('$nome','$login');
?>
Os dados que forem inseridos não serão legíveis ou traduzíveis para nós. Mas quando você for dar o output nos dados sairão perfeitos.

Não vejo problema.

Há outras diversas formas de se fazer a mesma coisa.

mas de qualquer forma, porque se preocupar com o que esta no banco?

caso for fazer alguma verificação ,

ex:

<?php
$login = htmlentities($_POST['login']);
$sql = mysql_query("select * from `tabela` where `login` = '$login'");
?>
Bom, eu sei que não é a melhor forma de se fazer isto, mas isto é uma coisa tão simples e não influencia , inclusive,

se vocês forem usar uma função anti Injection por exemplo , vão ter que lidar com a conversão de determinados caracteres que vão aparecer estranhos no banco, portanto basta somente definir

header('Content-Type: text/html; charset=utf-8');
//// Html
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
e deixar que o navegador faça o resto

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu pego o valor que foi com problema pro banco, ele também vem com problema.

Tenho que inserir sem problema para poder visualizar sem problema.

Na verdade optei por não usar o SET NAMES mais, mas sim o

mysql_set_charset('utf8');

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.