
Briguinha Boba Com O Utf-8
#1
Posted 14/08/2006, 00:28
"Exemplo de texto com acentuação isso é fácil de entender, a nação agradece a fé"
Agora na página uso o charset UTF-8 com a meta tag abaixo:
<meta http-equiv="Content-Type" content="application/text/html; charset=utf-8" />
Ai que vem o problema, os textos ficam todos zuados como muitos devem saber.
Para resolver tal problema tenho usado a função utf8_encode para todos os textos enviados ao navegador. Funciona muito bem. Também já usei as opções htmlentities e soluções própias para passar a acentuação para código html.
Mas tirando as duas soluções propostas e testadas por mim, qual outra os experts da área recomendam?
Andei verificando o script WordPress e eles não usam a função utf8_encode, ai fiquei mais curioso ainda.
Bem, é isso espero que entedam.
Valeu
#2
Posted 14/08/2006, 08:17
1. Gravar os dados no banco já codificados, o que acredito ser a melhor, pois você codifica os dados apenas uma vez, não sobrecarregando o servidor com isso a cada acesso.
Ex:
$texto = utf8_encode($_POST["text]");
mysql_query("INSERT INTO tabela (texto) VALUES ('$texto')");
2. Codificar a string na própria consulta SQL
Ex:
SELECT CONVERT(texto USING utf8);
3. A maneira que você está utilizando.
#3
Posted 14/08/2006, 16:49
valeu pelas informações, era mais ou menos isso que eu imaginava.
#4
Posted 14/08/2006, 22:54
<meta http-equiv="Content-Type" content="application/text/html; charset=utf-8" />
Ai que vem o problema, os textos ficam todos zuados como muitos devem saber.
Isso pode ser resolvido se voce realmente mudar o charset do seu codigo para UTF-8. So adicionando um meta o charset nao vira unicode.
#5
Posted 14/08/2006, 23:37
Continue com seu pensamento jfsso e desdobre sua idéia para o conhecimento de todos.
#6
Posted 15/08/2006, 02:15
tabela com o collation: latin1_swedish_ci
php com o charset: utf8
Ate' aqui sem erros se eu insiro dados no mysql pelo script.

Trocando o charset do php para iso8859-1 e lendo os dados que foram gravados em utf8 da erro na hora mostrar. Gravando por este script e mostrando nao da problemas. Trocando o collation do mysql consegui fazer tudo mostrar legal.
Pra diminuir um pouco mais os problemas (coreano e chines nao mostram direito), resolvi adicionar mais coisas no php...
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
ob_start("mb_output_handler");
Pronto, agora seja o que for, ele sempre vai mandar o output em utf-8. Deu pra usar ate' coreano e chines sem problemas. So que mudando o charset do script para iso8859-1 ele parou de funcionar.
#7
Posted 15/08/2006, 03:30
subistitui essa meta : <meta http-equiv="Content-Type" content="application/text/html; charset=utf-8" />
por essa: <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
vlw abraços qualquer duvidas postae!
Devagar e sempre. Se Deus é por nós, quem será contra nós?
#8
Posted 15/08/2006, 03:48
jfsso, achei interessante estas funções:
//mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
ob_start("mb_output_handler");
Em outras palavras, quer dizer que dispensa o uso da função utf8_encode() que eu tenho usado nas strings. É isso mesmo?
Testei estas funções colocando-as no topo do meu .php e funcionou lindamente. Coloquei no local correto?
Um detalhe interessante que achei nestas funções é que variar o charset das páginas fica fácil, basta ocultar ou não estas funções. E isso mantendo meu db em Latin.
obs: repara no comentário da primeira função, se usar a função ele come meus acentos.
Abraço e valeu pelo esclarecimento
Edição feita por: zegames, 15/08/2006, 03:56.
#9
Posted 15/08/2006, 03:59


Devagar e sempre. Se Deus é por nós, quem será contra nós?
#10
Posted 15/08/2006, 04:45
Fiz mais testes intensivos aqui e volto atrás em minhas palavras..
Se eu uso as funções abaixo:
mb_internal_encoding("UTF-8");
mb_http_output("UTF-8");
ob_start("mb_output_handler");
Os textos acentuados vindo do banco de dados funcionam bem, mas se eu tiver outros textos acentuados no template ai volta a zuar.
Agora se eu oculto as funções mb ai preciso usar a fução utf8_encode() nas strings vindas do db.
Eu tenho um blog baseado no WordPress e por curiosidade mudei o charset de UTF-8 para ISO-8859-1 e todos os posts anteriores ficaram com o texto zuado. Olhei no banco de dados e o db é Latin, mas os textos aparentemente estão encodados em utf-8. A palavra 'coleção' por exemplo está como 'coleção' no db.
O negócio é projetar seu sistema para um charset só e ponto final. Nem o WordPress tem uma solução mágica para o usuário mudar o charset a qualquer momento e não ter problemas com o texto então nem vou esquentar a cabeça.
Vou continuar usando a função utf8_encode() nas strings.
Mas eu vou ser sincero... ainda não estou satisfeito com esse assunto :[
#11
Posted 16/08/2006, 11:05

1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)