UTF-8 ou ISO-8859-1? qual dessas eh a melhor formatação?

4,736 views
Skip to first unread message

André Novaski

unread,
Nov 1, 2009, 6:08:40 AM11/1/09
to LISTA PHP
Gostaria de saber qual é a melhor codificação para os conjuntos -
BROWSER / TEXTO / BANCO DE DADOS?

Hoje com a diversificação de browsers, temos vários tratamentos a ser
feitos, porém ainda encontro muitos sites com esse problema de
codificação e tivemos esse mesmo problema com acentuação.

Tem uma forma prática que solucione esse problema?

Qual eh a formatação do banco?

No head do Html?

Browser precisa ser ajustado algo?

Mudaria algo se o "usuário" acesse de outro PAÍS?

Acho q isso conseguiria ajudar a todos que tem esse mesmo problema.

Obrigado desde já a todos do GRUPO PHP.

Att André Novaski

www.ddibrasil.com

Tiago Natel de Moura

unread,
Nov 1, 2009, 6:26:18 AM11/1/09
to list...@googlegroups.com
A recomendação é usar sempre UTF-8. Mas no caso os browser ocidentais estão em iso-8859-1, mas isso não tem problema, pois o navegador já retorna o ASCII.

Mas para o xhtml/php/banco de dados é recomendável sempre usar UTF-8 por ele suportar às mais variadas linguas.


Até mais.
Tiago Natel de Moura
http://blog.tiagomoura-design.com.br

> Date: Sun, 1 Nov 2009 03:08:40 -0800
> Subject: [ PHP - Google ] UTF-8 ou ISO-8859-1? qual dessas eh a melhor formatação?
> From: andre....@gmail.com
> To: list...@googlegroups.com

Alessandro Santos

unread,
Nov 1, 2009, 7:33:49 AM11/1/09
to list...@googlegroups.com
Escrevi um pouco sobre UTF-8 na minha home:

http://alessandrosantos.com.br/?p=214

Espero que lhe ajude.

2009/11/1 André Novaski <andre....@gmail.com>:
--
[]'s & =*'s do lee
http://alessandrosantos.com.br
# Alessandro Ramos dos Santos @ Itaporanga @ SP @ Brasil
# MSN: lee.rain # Gtalk: edenfall # Orkut: 7093009035179968825 #
Twitter: @edenfall

"A nação que resolve trocar um pouco de liberdade por um pouco de
ordem não consegue nenhuma das duas, e não merece a ambas" - Thomas
Jefferson

Leandro Carvalho

unread,
Nov 2, 2009, 8:21:09 AM11/2/09
to LISTA PHP
Olá André Novaski,

Já codei algumas aplicações que utlizavam nl (Holandês) e de_de
(Alemão), alem de ingles para visualização (camada da view).
Sempre utilizei codificação UTF-8, e nunca tive problemas com
caracteres estrangeiros.
É importante salientar que o encoding do teu arquivo, onde estás
escrevendo teu código, também esteja codificado em UTF-8.
Nós utilizavamos uma função para verificação da linguagem do browser
do cliente (caso não fosse nem "de" nem "nl" ele setava a linguagem da
aplicação para inglês)
Nunca tive problema algum na apresentação dos dados. Aconcelho
fortemente a utilização de UTF-8 na codificação dos arquivos e nos
headers do html. ;D

Leandro Carvalho

Fábio Fernandes

unread,
Nov 2, 2009, 10:33:16 AM11/2/09
to list...@googlegroups.com
Se mesmo assim não conseguir resolver seu problema, fiz um post em meu
blog que pode te ajudar!
Pelo menos me ajudou quando eu estava com esse problema:
http://fabiofl.blogspot.com/2009/11/acentuacao-para-phpbanco-de-dados.html

2009/11/2 Leandro Carvalho <lrcar...@gmail.com>:
--
Fábio Fernandes
Web Design / Design Gráfico / Programador
http://fabiofl.blogspot.com

José Cláudio Medeiros de Lima

unread,
Nov 2, 2009, 11:27:19 AM11/2/09
to list...@googlegroups.com
Cara.. esse assunto é complicado de mais.
A melhor solução que já encontrei foi: Tudo em UTF-8
Tudo mesmo. Só precisa q UM arquivo esteja diferente pra dar tudo errado..
Ontem mesmo estava quebrando minha cabeça tentando achar esse tal arquivo...Se for de configuração então, é complicado, pois afetará o sistema inteiro...

Alguém aqui já ouviu falar de uma ferramenta que converta múltiplos arquivos para uma codificação?
Eu achei essa ontem, mas não testei ainda. Alguém conhece outra, ou até mesmo já testou essa?

2009/11/2 Fábio Fernandes <jfab...@gmail.com>

Eduardo Kraus

unread,
Nov 2, 2009, 5:11:56 PM11/2/09
to list...@googlegroups.com
Aqui na minha empresa para não termos problemas com acentos(Flex) e codificação (HTML), padronizamos tudo para UTF-8. Esta codificação vale desde o banco de dados até tabelas.

COLLATE utf8_general_ci

utf8 - UTF-8
general - Geral
ci - Case Insensitive - Sem diferenciar maiúsculas e minúsculas.

Base de dados:
CREATE DATABASE `basededados` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Tabelas
CREATE TABLE `basededados `.`tabela` (
`nome` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci

Para que o MySql faça automáticamente as tabelas como UTF-8 adicione a seguinte linha no config.inc.php
$cfg['DefaultCharset'] = 'utf8_general_ci';

No HTML vai a seguinte informação:
<meta http-equiv="Content-Type" content="txt/html; charset="utf-8" />
Todos os arquivos criados estão na codificação UTF-8.
?ui=2&view=att&th=124b6ec1aa795e65&attid=0.1&disp=attd&realattid=ii_124b6ec1aa795e65&zw

É isso que aqui na empresa funciona melhor e nunca mais tive problemas com acentos e codificação.

Eduardo Kraus

Desenvolvedor
eduard...@gmail.com
http://blog.mxml.com.br
http://twitter.com/EduardoKraus




2009/11/1 André Novaski <andre....@gmail.com>

Andreus Timm

unread,
Nov 2, 2009, 9:12:54 AM11/2/09
to list...@googlegroups.com
Existem três dicas para nunca ter problemas de acentuação:

  • Banco de dados
          CREATE DATABASE `teste` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
          E tabelas com utf8_general_ci

  • Arquivos
          Salvar os arquivo com o encode sempre como UTF8
  • Meta tag’s
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

2009/11/2 Leandro Carvalho <lrcar...@gmail.com>
--
Andreus Timm
(51) 8435-4850

Tiago Natel de Moura

unread,
Nov 2, 2009, 5:43:07 PM11/2/09
to LISTA PHP
@José Cláudio
Se voce usa o linux é só fazer um script assim:

#!/bin/sh
# convert.sh

# Aqui coloque o diretorio que deseja mandar os arquivos alterados
# recomendo não colocar no diretório original, pois pode haver algum
problema
# e corromper o seu trabalho
novo_project="/home/jose/meu_novo_projeto"

for arquivo in `ls`
do
iconv -f iso-8859-1 -t utf-8 $arquivo > "$novo_project/$arquivo"
done

Deve funcionar.
On 2 nov, 14:27, José Cláudio Medeiros de Lima <klaw...@gmail.com>
wrote:
> Cara.. esse assunto é complicado de mais.
> A melhor solução que já encontrei foi: Tudo em UTF-8
> Tudo mesmo. Só precisa q UM arquivo esteja diferente pra dar tudo errado..
> Ontem mesmo estava quebrando minha cabeça tentando achar esse tal
> arquivo...Se for de configuração então, é complicado, pois afetará o sistema
> inteiro...
>
> Alguém aqui já ouviu falar de uma ferramenta que converta múltiplos arquivos
> para uma codificação?
> Eu achei essa <http://winvnkey.sourceforge.net/main.html> ontem, mas não
> testei ainda. Alguém conhece outra, ou até mesmo já testou essa?
>
> 2009/11/2 Fábio Fernandes <jfabi...@gmail.com>
>
>
>
> > Se mesmo assim não conseguir resolver seu problema, fiz um post em meu
> > blog que pode te ajudar!
> > Pelo menos me ajudou quando eu estava com  esse problema:
> >http://fabiofl.blogspot.com/2009/11/acentuacao-para-phpbanco-de-dados...
>
> > 2009/11/2 Leandro Carvalho <lrcarva...@gmail.com>:

André Novaski

unread,
Nov 3, 2009, 7:56:15 AM11/3/09
to LISTA PHP
Galera do PHP fico grato pela ajuda.

Acredito que me ajudou e a todos que tem esse problema de formatação e
codificação.

Estamos agora em um debate aqui na empresa para que possamos deixar
tudo neste fluxo de dados.

Obrigado a todos.

--
Construa uma semana excelente.

Att André Novaski

41 3072 0089
41 8801 1769
41 9810 2204

www.ddibrasil.com > NOVO SITE DDI Brasil - Soluções Web e Hardware.



On 2 nov, 20:43, Tiago Natel de Moura <tiago_mo...@live.com> wrote:
> @José Cláudio
> Se voce usa o linux é só fazer um script assim:
>
> #!/bin/sh
> # convert.sh
>
> # Aqui coloque o diretorio que deseja mandar os arquivos alterados
> # recomendo não colocar no diretório original, pois pode haver algum
> problema
> # e corromper o seu trabalho
> novo_project="/home/jose/meu_novo_projeto"
>
> for arquivo in `ls`
> do
>         iconv -f iso-8859-1 -t utf-8 $arquivo > "$novo_project/$arquivo"
> done
>
> Deve funcionar.
>
> Tiago Natel de Mourahttp://blog.tiagomoura-design.com.br

Igor Escobar

unread,
Nov 3, 2009, 7:29:49 AM11/3/09
to list...@googlegroups.com
Vale lembrar que vocês devem utilizar a utf-8 SEM BOM ou utf-8 without BOM! senão vocês poderão ter problemas no futuro.


Regards,
Igor Escobar
Systems Analyst & Interface Designer

+ http://blog.igorescobar.com
+ http://www.igorescobar.com
+ @igorescobar (twitter)





2009/11/2 Tiago Natel de Moura <tiago...@live.com>

Eduardo Kraus

unread,
Nov 3, 2009, 9:48:55 AM11/3/09
to list...@googlegroups.com
isso, isso, isso

2009/11/3 Igor Escobar <titio...@gmail.com>

Julio Protzek

unread,
Nov 3, 2009, 6:05:29 PM11/3/09
to list...@googlegroups.com

Eduardo Kraus

unread,
Nov 3, 2009, 8:28:17 PM11/3/09
to list...@googlegroups.com

Na verdade este é o mínimo que um programador tem que saber. Se não souber a diferença de UTF-8 e ISO-8859-1 não é programador. Apenas ele se diz programador.

Eduardo Kraus

Desenvolvedor
eduard...@gmail.com
blog.mxml.com.br
www.twitter.com/EduardoKraus



2009/11/3 Julio Protzek <juliop...@gmail.com>

Lucas Almeida

unread,
Nov 3, 2009, 8:44:01 PM11/3/09
to list...@googlegroups.com
Ta sendo totalmente ignorante em sua fala, não é só porque vocë sabe, que todos devem saber, e uma coisa não liga a outra, para ser programador agora tenho que saber a diferença entre ambos? Ta maluco? E outra cara, programador não precisa saber disso, em um ciclo de produção de software, o programador não tem contato nem com o HTML muito menos com o banco dados em si, então onde ele precisa saber disso?
Sendo que a solução deste problema está no META e no Collate e Charset do banco...

@Topic.

Muito boa as respostas, obrigado galera aprendi muito com tudo que foi passado aqui, sempre tive duvidas sobre isso,  @Julio Protzek muito obrigado por passar esse link achei bem interessante.

Abracos
Te mais.



2009/11/3 Eduardo Kraus <eduard...@gmail.com>



--
Obrigado!
Lucas de Almeida.
(41) 8449-7802

Luiz Escobar

unread,
Nov 4, 2009, 1:59:34 PM11/4/09
to list...@googlegroups.com
Meio infeliz e sem lógica esta colocação, nada haver...
 

[]s
Luiz Escobar - http://www.megasistema.com.br
============================================
Harbour 2.0.0beta3(Rev.12624) (DbfNtx+MySQL)
MiniGUI 1.7 Extended (Build 74)-2009.09.30
BCC 5.8.2 (Turbo C++ Explorer 2006)
--------------------------------------------
XAMPP  1.7.1 (Apache+MySQL+PHP+(Linux/Win))
FLEX   3.0 (iniciante)
--------------------------------------------
Delphi ( 6 PRO & 7 Ent ) (DBF/NTX+MySQL)
============================================
AMD ?  AiMeuDeus Ñ!, Sou + Intel....
 
 
 

Danilo Portela

unread,
Nov 4, 2009, 5:24:02 PM11/4/09
to list...@googlegroups.com
Prezados estava tendo problema de codificação no meu projeto, estava ocorrendo de aparecer uns caracteres estranhos na página, utilizando aqui no meu servidor local e na web. Eu usava ISO-8859-1.

Após ler esta discussão resolvi mudar tudo pra UTF-8 e transformei os arquivos para UTF-8 sem BOM, como mencionado aqui.
Ok, localmente ficou tudo certo, mas quando uso meu sistema na web e vou salvar algo no banco de dados MySQL que contenha acento ele distorce o caracter, por exemplo, digito á e ele salva á .

o que pode estar ocorrendo? sendo que localmente eu uso o banco da web ?

Atenciosamente,

Danilo Portela



2009/11/4 Luiz Escobar <esc...@megasistema.com.br>

Michel Wilhelm

unread,
Nov 4, 2009, 5:38:59 PM11/4/09
to list...@googlegroups.com
Isso pode ocorrer por vários fatores.
Em primeiro lugar... qual o collate dos campos, da tabela e do banco de
dados? aconselhável utf8_bin.
Qual o charset que está usando na conexão com o mysql? Geralmente o
padrão é latin7. Aconselhável nesse caso utf8 (mysql_set_charset('utf8')
ou $mysqli->set_charset('utf8'))

Ano passado postei em meu blog a minha solução para este problema. De lá
pra cá nunca mais tive problemas com charset, a menos com "softwares" de
terceiros ... hehe

Que a moderação me perdoe o link mas pode resolver o problema aqui exposto.
http://www.surrealartweb.com.br/blog/22/09/2008/como-trabalhar-com-utf8-em-php-mysql/

Danilo Portela escreveu:
> Prezados estava tendo problema de codificação no meu projeto, estava
> ocorrendo de aparecer uns caracteres estranhos na página, utilizando
> aqui no meu servidor local e na web. Eu usava ISO-8859-1.
>
> Após ler esta discussão resolvi mudar tudo pra UTF-8 e transformei os
> arquivos para UTF-8 sem BOM, como mencionado aqui.
> Ok, localmente ficou tudo certo, mas quando uso meu sistema na web e
> vou salvar algo no banco de dados MySQL que contenha acento ele
> distorce o caracter, por exemplo, digito á e ele salva á .
>
> o que pode estar ocorrendo? sendo que localmente eu uso o banco da web ?
>
> Atenciosamente,
>
> Danilo Portela
>
>
>
> 2009/11/4 Luiz Escobar <esc...@megasistema.com.br
> <mailto:esc...@megasistema.com.br>>
>
> Meio infeliz e sem lógica esta colocação, nada haver...
>
>
> []s
> Luiz Escobar - http://www.megasistema.com.br
> ============================================
> Harbour 2.0.0beta3(Rev.12624) (DbfNtx+MySQL)
> MiniGUI 1.7 Extended (Build 74)-2009.09.30
> BCC 5.8.2 (Turbo C++ Explorer 2006)
> --------------------------------------------
> XAMPP 1.7.1 (Apache+MySQL+PHP+(Linux/Win))
> FLEX 3.0 (iniciante)
> --------------------------------------------
> Delphi ( 6 PRO & 7 Ent ) (DBF/NTX+MySQL)
> ============================================
> AMD ? AiMeuDeus Ñ!, Sou + Intel....
>
>
>
>
> *From:* Eduardo Kraus <mailto:eduard...@gmail.com>
> *Sent:* Tuesday, November 03, 2009 11:28 PM
> *To:* list...@googlegroups.com <mailto:list...@googlegroups.com>
> *Subject:* [ PHP - Google ] Re: UTF-8 ou ISO-8859-1? qual dessas
> eh a melhor formatação?
>
> Na verdade este é o mínimo que um programador tem que saber. Se
> não souber a diferença de UTF-8 e ISO-8859-1 não é programador.
> Apenas ele se diz programador.
> *
> Eduardo Kraus*
> Desenvolvedor
> eduard...@gmail.com <mailto:eduard...@gmail.com>
> blog.mxml.com.br <http://blog.mxml.com.br/>
> www.twitter.com/EduardoKraus <http://www.twitter.com/EduardoKraus>
>
>
>
>
> 2009/11/3 Julio Protzek <juliop...@gmail.com
> <mailto:juliop...@gmail.com>>
> <http://local.joelonsoftware.com/wiki/O_M%C3%ADnimo_Absoluto_Que_Todos_os_Programadores_de_Software_Precisam,_Absolutamente,_Positivamente_de_Saber_Sobre_Unicode_e_Conjuntos_de_Caracteres_%28Sem_Desculpas%21%29>
>
>
>
>
>
>
>
>
> >

Danilo Portela

unread,
Nov 4, 2009, 7:52:50 PM11/4/09
to list...@googlegroups.com
Prezados, minha aplicação usa o zend framework, estou citando pois pode precisar fazer alguma alteração nele que talvez não esteja fazendo.
Todas as páginas usam a meta tag content-type e coloco como utf-8 , o banco estava latin, mudei para utf-8 e não mudou em nada o problema
todos os arquivos estão salvos como utf-8 sem BOM pelo notepad++ e meu eclipse também está configurado para salvar os arquivos como utf-8.

Quando usa minha aplicação LOCAL, pc windows 7, que utiliza o banco da web e vou salvar algo com acentro fica guardado desta maneira no banco.
ex.: conteúdo =>(no banco)conte&uacute;do

Quando uso minha aplicação no servidor da web, que é linux:
Ex.: conteúdo =>(no banco)conte&Atilde;&ordm;do

ou seja, na web ele não está salvando de maneira correta, será alguma coisa do servidor?? pois todos meus arquivos locais estão na web no mesmo estado.


Atenciosamente,

Danilo Portela




2009/11/4 Michel Wilhelm <michel...@gmail.com>

Eduardo Kraus

unread,
Nov 4, 2009, 8:05:45 PM11/4/09
to list...@googlegroups.com

As alterações foram feitas local e remoto?

Todas estas alterações de banco e arquivos foram replicadas?

/* Arquivos quando só altera o tipo, é aconselhável antes apagar os arquivos remotos antes de enviar novos. */




2009/11/4 Danilo Portela <danilo...@gmail.com>

Alessandro Santos

unread,
Nov 5, 2009, 5:39:34 AM11/5/09
to list...@googlegroups.com

Janes Roberto da Costa

unread,
Nov 5, 2009, 7:26:55 AM11/5/09
to list...@googlegroups.com

Só que  esta página não contem mais conteúdo algum!

=/

 

.....................................................................................................................................

Janes Roberto da Costa

Analista de Sistemas (TAIG)
SEDUC–Secretaria de Estado de Educação de Mato Grosso

www.seduc.mt.gov.br
COT–Coordenadoria de Tecnologia da Informação
Telefone: (65) 3613-6394

E-mail: janes...@seduc.mt.gov.br

“Se, pois, o Filho do Homem vos libertar, verdadeiramente sereis livres.

E conhecereis a verdade, e a verdade vos libertará.” (João 8:32;36)

Igor Escobar

unread,
Nov 5, 2009, 6:33:26 AM11/5/09
to list...@googlegroups.com
Vale a leitura:
http://www.igorescobar.com/blog/2009/10/26/problemas-com-utf-8-with-bom/

Olá pessoal!
Como um dos objetivos deste blog é apresentar soluções para problemas cotidianos, hoje eu vou falar sobre um problema que enfrentei utilizando a codificação UTF-8 BOM em minhas páginas e sinceramente, até a pouco eu não sabia a diferença entre o UTF-8 sem o BOM e o UTF-8 com o BOM.

O Problema

Quando usamos paginas codificadas em UTF-8, em alguns user agents eu recebo algumas linhas extras ou caracteres não esperados no TOPO do documento ou no TOPO de arquivos incluídos… como eu removo estes caracteres?

Resposta

Se você trabalha com um arquivo codificado em UTF-8, provavelmente, seus problemas estão sendo causados pela presença da assinatura (BOM) do seu documento que o user agent não reconheçe.

A assintua (BOM) dos documentos UTF-8 estão sempre no topo do documento e normalmente você espera vêlos, mas não perca seu tempo. A única maneira (works for me) que fez com que pudesse ver a assinatura foi trocando a codificação do documento de UTF-8 BOM para um ISO, caso contrário, a única coisa que você verá, será uma linha em branco no começo do seu documento (e em alguns casos, como o meu, nem isso você vê).

A confusão

O grande problema causado pela assinatura dos documentos UTF-8 é que pêla experiência que cada programador possuí é de instinto o programador já sair à procura de linhas extras nos arquivos incluídos.
É neste pronto onde se é gasto um grande tempo… Depois de perter todo o seu tempo, então, você começa a ficar frustrado por não encontrar a linhas extras nos arquivos e começa a acreditar que tudo isso não passa de uma conspiração do dêmonio com a sua pessoa.

O que é a assinatura (BOM) dos documentos UTF-8?

Algumas aplicações inserem uma combinação particular de bytes no começo dos arquivos e isso é usado para indicar que o conteúdo a seguir, possuí caracteres Unicode. Essa combinação de caracteres é conhecida como assinatura ou Byte Order Mark. Alguns editores mostram a assinatura como uma linha extra outras aplicações como o Zend Studio mostram a assinatura como ( ).

A assinatura (BOM) do documento é importante?

No caso dos arquivos codificados em UTF-8 não, você pode retirar esta assinatura sem causar problemas de interpretação, a assinatura (BOM) do documento só é importante para documentos UTF-16 e UTF-32 ela é usada para informar como o user agent deve interpretar os caracteres.

Como detectar a presença da assinatura de arquivos UTF-8?

Primeiro, nós precisamos detectar se esta linha extra no começo do arquivo é realmente a assinatura BOM.
Você pode tentar procurar no olhometro, mas se o seu editor interpreta corretamente a assinatura do arquivo, lamento, mas você não verá. Se o seu editor não interpretar ou não reconhecer esta assinatura ele vai apresentar caracteres como  no início do seu documento. Se você utilizar um editor binário, capaz de mostrar valores em hexadecimal, a assinatura poderá ser indentificada pelo conjunto de bytes EF BB BF.

Alternativamente, se você possuir em mãos um bom editor, ele vai te dizer a codificação do documento na barra inferior do editor ou em algum menu que apresente o encoding do seu documento.

Se em nenhum destes casos você obter sucesso, existem algumas aplicações web que são capazes de detectar a assinatura (BOM) de documentos UTF-8.

Removendo a assinatura (BOM)

Se você possuí algum editor capaz de exibir esta assinatura, você pode remover na mão, apenas seleciona-la e apaga-la.

Alguns editores como o Notepad++ (Windows, free) e Komodo (Linux, Free) permitem que você especifique se você quer ou não a assinatura no ato em que você salva o arquivo, dê uma olhada no menu “Format”.

Outra opção, é você utilizar algum tipo de script que automatize a remoção da assinatura rápidamente e recursivamente em todos os seus arquivos. Existe um script feito em Perl, desenvolvido por Martin Dürst que faz isso para você:

01.# program to remove a leading UTF-8 BOM from a file
02.# works both STDIN -&gt; STDOUT and on the spot (with filename as argument)
03. 
04.if ($#ARGV &gt; 0) {
05.    print STDERR &quot;Too many arguments!\n&quot;;
06.    exit;
07.    }
08. 
09.my @file;   # file content
10.my $lineno = 0;
11. 
12.my $filename = @ARGV[0];
13.if ($filename) {
14.    open( BOMFILE, $filename ) || die &quot;Could not open source file for reading.&quot;;
15.    while (&lt;BOMFILE&gt;) {
16.        if ($lineno++ == 0) {
17.            if ( index( $_, '' ) == 0 ) {
18.                s/^\xEF\xBB\xBF//;
19.                print &quot;BOM found and removed.\n&quot;;
20.                }
21.            else { print &quot;No BOM found.\n&quot;; }
22.            }
23.        push @file, $_ ;
24.        }
25.    close (BOMFILE)  || die &quot;Can't close source file after reading.&quot;;
26. 
27.    open (NOBOMFILE, &quot;&gt;$filename&quot;) || die &quot;Could not open source file for writing.&quot;;
28.    foreach $line (@file) {
29.        print NOBOMFILE $line;
30.        }
31.    close (NOBOMFILE)  || die &quot;Can't close source file after writing.&quot;;
32.    }
33.else # STDIN -&gt; STDOUT
34.    while (&lt;&gt;) {
35.    if (!$lineno++) {
36.        s/^\xEF\xBB\xBF//;
37.        }
38.    push @file, $_ ;
39.    }
40. 
41.    foreach $line (@file) {
42.        print $line;
43.        }
44.    }

Cuidado com o BOM

Em alguns editores como o Widows Notepad, se você escolhe salvar o arquivo como UTF-8 ele automaticamente coloca a assinatura (BOM).

A assinatura (BOM) em arquivos CSS pode causar a falha de de interpretação de algumas regras em alguns user agents, por isso, deve ser removida.

Em alguns navegadores, a presença da assinatura pode fazer com que TODOS os caracteres da sua pagina sejam interpretados como se fossem UTF-8 independente de qualquer declaração contrária.

E é isso pessoal, espero que seja útil para vocês, espero que você não perca horas do seu dia tentando resolver este problema como eu e algumas pessoas da comunidade PHP passaram.

Em arquivos PHP, se você trabalhar como funções como header(); a assinatura causará aquele problema comum quando você enviar qualquer caracter para o browser antes dos header();

[]’s
Igor




Regards,
Igor Escobar
Systems Analyst & Interface Designer

+ http://blog.igorescobar.com
+ http://www.igorescobar.com
+ @igorescobar (twitter)





2009/11/5 Janes Roberto da Costa <janes...@seduc.mt.gov.br>

Alessandro Santos

unread,
Nov 5, 2009, 6:36:13 AM11/5/09
to list...@googlegroups.com
O Gmail cortou a URL... essa URL tava no link que mandei láaaaaaaa em cima, onde contei como resolvi todos meus probs com UTF-8, PHP e MySQL mas ninguem leu :)

2009/11/5 Janes Roberto da Costa <janes...@seduc.mt.gov.br>

Só que  esta página não contem mais conteúdo algum!

Janes Roberto da Costa

unread,
Nov 5, 2009, 7:40:40 AM11/5/09
to list...@googlegroups.com

Danilo Portela

unread,
Nov 5, 2009, 4:17:34 PM11/5/09
to list...@googlegroups.com
Prezados tudo está UTF-8, exclui e enviei todos os arquivos para web, mas o problema está acontecendo da seguinte forma.

eu pego os valores do form via post, segue meu teste:

Local: (SO: Windows 7 x64 pt-BR)
echo $post->assunto; //resultado: áéíóúãõüç blá blá blá
print_r($post);//resultado parcial do objeto: [assunto] => áéíóúãõüç blá blá blá

na web: (SO: Linux Locaweb)
echo $post->assunto; //resultado: áéíóúãõüç blá blá blá
print_r($post); //resultado parcial do objeto: [assunto] => áéíóúãõüç blá blá blá

alguém sabe o pq isto está acontecendo?


Atenciosamente,

Danilo Portela

Danilo Portela

unread,
Nov 5, 2009, 4:58:40 PM11/5/09
to list...@googlegroups.com
Ao ver o print_r no $post percebi algo, segue abaixo todo um print:

Zend_Filter_Input Object ( [_data:protected] => Array ( ) [_filterRules:protected] => Array ( ) [_validatorRules:protected] => Array ( ) [_validFields:protected] => Array ( [acao] => [cliente] => 18 [assunto] => áéíóúãõüç blá blá blá new assunto [mensagem] =>

áéíó´´u´çãõ ausaualksnçak ushças

) [_invalidMessages:protected] => Array ( ) [_invalidErrors:protected] => Array ( ) [_missingFields:protected] => Array ( ) [_unknownFields:protected] => Array ( ) [_defaultEscapeFilter:protected] => Zend_Filter_HtmlEntities Object ( [_quoteStyle:protected] => 2 [_charSet:protected] => ISO-8859-1 [_doubleQuote:protected] => 1 ) [_loaders:protected] => Array ( [filter] => Zend_Loader_PluginLoader Object ( [_loadedPluginPaths:protected] => Array ( [HtmlEntities] => Zend/Filter/HtmlEntities.php ) [_loadedPlugins:protected] => Array ( [HtmlEntities] => Zend_Filter_HtmlEntities ) [_prefixToPaths:protected] => Array ( [Zend_Filter_] => Array ( [0] => Zend/Filter/ ) ) [_useStaticRegistry:protected] => ) ) [_defaults:protected] => Array ( [allowEmpty] => [breakChainOnFailure] => [escapeFilter] => HtmlEntities [missingMessage] => Field '%field%' is required by rule '%rule%', but the field is missing [notEmptyMessage] => You must give a non-empty value for field '%field%' [presence] => optional ) [_processed:protected] => 1 )

[_charSet:protected] => ISO-8859-1

como faço pra alterar o charset do $post pois na view já está setada como UTF-8, como mostro abaixo no bootstrap:

$view = new Zend_View();

/** Configura a codificação das páginas */
$view->setEncoding('UTF-8');

há alguma configuração para setar o charset para UTF-8 aqui:
Zend_Registry::set('post', new Zend_Filter_Input(NULL,NULL,$_POST));


Atenciosamente,

Danilo Portela




2009/11/5 Danilo Portela <danilo...@gmail.com>

Danilo Portela

unread,
Nov 5, 2009, 10:32:13 PM11/5/09
to list...@googlegroups.com
Bem consegui arrumar, então pra quem interessar e usar o zend framework segue a solução.

Mesmo que você altere tudo para UTF-8, ao receber entrada de dados via POST ou GET usando o Zend_Filter_Input você deve setar o charset para UTF-8 pois o padrão que a classe utiliza para tratar entrada de dados é ISO-8859-1. Então no seu bootstrap faça da seguinte forma:

$post = new Zend_Filter_Input(NULL,NULL,$_POST);
$post->setDefaultEscapeFilter(new Zend_Filter_HtmlEntities(array('charset'=>'UTF-8')));

Zend_registry::set('post',$post);

Obrigado a todos que ajudaram.

felipe moraes

unread,
Nov 5, 2009, 4:48:14 PM11/5/09
to list...@googlegroups.com
na web: (SO: Linux Locaweb)
echo $post->assunto; //resultado: áéà óúãõüç blá blá blá <<<<<UTF8 - OK

print_r($post); //resultado parcial do objeto: [assunto] => áéíóúãõüç blá blá blá


se não estiver usando um framework que tenha suporte a utf-8 .. coloca

echo utf8_decode($post->assunto);

e pronto

Andreus Timm

unread,
Nov 5, 2009, 5:03:12 PM11/5/09
to list...@googlegroups.com
Da uma olhada nessas 3 coisas, confere..

Existem três dicas para nunca ter problemas de acentuação:

  • Banco de dados
          CREATE DATABASE `teste` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
          E tabelas com utf8_general_ci

  • Arquivos
          Salvar os arquivo com o encode sempre como UTF8
  • Meta tag’s
         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Cofira novamente os arquivos pois as vezes se salva com UTF8 e não vai, já tive problemas com isso, e acredite o notepad foi a salvação.

2009/11/5 Danilo Portela <danilo...@gmail.com>

Tiago Natel de Moura

unread,
Nov 5, 2009, 5:42:03 PM11/5/09
to LISTA PHP
Amigo, faça esse teste:

Na web: SO Linux da Locaweb
<?php
header('Content-Type: text/html; charset=utf-8');
echo $post->assunto;

Se a saída estiver correta pode ser o charset do arquivo que está em
ISO.

Até mais.
On 5 nov, 19:17, Danilo Portela <danilopara...@gmail.com> wrote:
> Prezados tudo está UTF-8, exclui e enviei todos os arquivos para web, mas o
> problema está acontecendo da seguinte forma.
>
> eu pego os valores do form via post, segue meu teste:
>
> Local: (SO: Windows 7 x64 pt-BR)
> echo $post->assunto; //resultado: áéíóúãõüç blá blá blá
> print_r($post);//resultado parcial do objeto: [assunto] => áéíóúãõüç blá blá
> blá
>
> na web: (SO: Linux Locaweb)
> echo $post->assunto; //resultado: áéíóúãõüç blá blá blá
> print_r($post); //resultado parcial do objeto: [assunto] => áéíóúãõüç blá
> blá blá
>
> alguém sabe o pq isto está acontecendo?
>
> Atenciosamente,
>
> Danilo Portela
>
> 2009/11/5 Janes Roberto da Costa <janes.co...@seduc.mt.gov.br>
>
> >  Estou lendo,
>
> > Estou mandando novamente o link:
>
> >http://local.joelonsoftware.com/wiki/O_M%C3%ADnimo_Absoluto_Que_Todo_...<http://local.joelonsoftware.com/wiki/O_M%C3%ADnimo_Absoluto_Que_Todo_...>
>
> > *
> > .....................................................................................................................................
> > *
>
> > *Janes Roberto da Costa*
>
> > *Analista de Sistemas (TAIG)
> > **SEDUC–Secretaria de Estado de Educação de Mato Grosso*
>
> > *www.seduc.mt.gov.br**
> > **COT–Coordenadoria de Tecnologia da Informação
> > Telefone: (65) 3613-6394*
>
> > *E-mail: **janes.co...@seduc.mt.gov.br*
>
> > *“Se, pois, o Filho do Homem vos libertar, verdadeiramente sereis livres.*
>
> > *E conhecereis a verdade, e a verdade vos libertará.” (João 8:32;36)*
>
> > *De:* list...@googlegroups.com [mailto:list...@googlegroups.com] *Em
> > nome de *Alessandro Santos
> > *Enviada em:* quinta-feira, 5 de novembro de 2009 07:36
>
> > *Para:* list...@googlegroups.com
> > *Assunto:* [ PHP - Google ] Re: UTF-8 ou ISO-8859-1? qual dessas eh a
> > melhor formatação?
>
> > O Gmail cortou a URL... essa URL tava no link que mandei láaaaaaaa em cima,
> > onde contei como resolvi todos meus probs com UTF-8, PHP e MySQL mas ninguem
> > leu :)
>
> > 2009/11/5 Janes Roberto da Costa <janes.co...@seduc.mt.gov.br>
>
> > Só que  esta página não contem mais conteúdo algum!
>
> > =/
>
> > *
> > .....................................................................................................................................
> > *
>
> > *Janes Roberto da Costa*
>
> > *Analista de Sistemas (TAIG)
> > **SEDUC–Secretaria de Estado de Educação de Mato Grosso*
>
> > *www.seduc.mt.gov.br**
> > **COT–Coordenadoria de Tecnologia da Informação
> > Telefone: (65) 3613-6394*
>
> > *E-mail: **janes.co...@seduc.mt.gov.br*
>
> > *“Se, pois, o Filho do Homem vos libertar, verdadeiramente sereis livres.*
>
> > *E conhecereis a verdade, e a verdade vos libertará.” (João 8:32;36)*
>
> > *De:* list...@googlegroups.com [mailto:list...@googlegroups.com] *Em
> > nome de *Alessandro Santos
> > *Enviada em:* quinta-feira, 5 de novembro de 2009 06:40
> > *Para:* list...@googlegroups.com
> > *Assunto:* [ PHP - Google ] Re: UTF-8 ou ISO-8859-1? qual dessas eh a
> > melhor formatação?
>
> > Também acho. Mas seria ideal que o programador entendesse UTF-8, então:
>
> >http://local.joelonsoftware.com/mediawiki/index.php/O_Mínimo_Absoluto_Que_Todo_Desenvolvedor_de_Software_Absolutamente,_Positivamente_Precisa_Saber_Sobre_Unicode_e_Conjuntos_de_Caracteres_(Sem_Desculpas<http://local.joelonsoftware.com/mediawiki/index.php/O_M%C3%ADnimo_Abs...>
> > !)
>
> > Eu sempre mando esse link aqui na lista :)
>
> > 2009/11/4 Luiz Escobar <esco...@megasistema.com.br>
>
> > Meio infeliz e sem lógica esta colocação, nada haver...
>
> > []s
> > Luiz Escobar -http://www.megasistema.com.br
> > ============================================
> > Harbour 2.0.0beta3(Rev.12624) (DbfNtx+MySQL)
> > MiniGUI 1.7 Extended (Build 74)-2009.09.30
> > BCC 5.8.2 (Turbo C++ Explorer 2006)
> > --------------------------------------------
> > XAMPP  1.7.1 (Apache+MySQL+PHP+(Linux/Win))
> > FLEX   3.0 (iniciante)
> > --------------------------------------------
> > Delphi ( 6 PRO & 7 Ent ) (DBF/NTX+MySQL)
> > ============================================
> > AMD ?  AiMeuDeus Ñ!, Sou + Intel....
>
> > *From:* Eduardo Kraus <eduardokr...@gmail.com>
>
> > *Sent:* Tuesday, November 03, 2009 11:28 PM
>
> > *To:* list...@googlegroups.com
>
> > *Subject:* [ PHP - Google ] Re: UTF-8 ou ISO-8859-1? qual dessas eh a
> > melhor formatação?
>
> > Na verdade este é o mínimo que um programador tem que saber. Se não souber
> > a diferença de UTF-8 e ISO-8859-1 não é programador. Apenas ele se diz
> > programador.
>
> > *
> > Eduardo Kraus*
> > Desenvolvedor
> > eduardokr...@gmail.com
> > blog.mxml.com.br
> >www.twitter.com/EduardoKraus
>
> > 2009/11/3 Julio Protzek <julioprot...@gmail.com>
>
> > Esse assunto é simples quando se entende o que está acontecendo.
> > Leia e recomende a todos programadores que leiam também:
>
> >http://local.joelonsoftware.com/wiki/O_M%C3%ADnimo_Absoluto_Que_Todos...<http://local.joelonsoftware.com/wiki/O_M%C3%ADnimo_Absoluto_Que_Todos...>
Reply all
Reply to author
Forward
0 new messages