| 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_ciPara 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. ![]() É 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 |
| 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 |
|
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. */ |
Eduardo Kraus Desenvolvedor eduard...@gmail.com blog.mxml.com.br www.twitter.com/EduardoKraus |
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)
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.
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?
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ê).
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.
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 ( ).
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.
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.
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 file02.# works both STDIN -> STDOUT and on the spot (with filename as argument)03. 04.if ($#ARGV > 0) {05. print STDERR "Too many arguments!\n";06. exit;07. }08. 09.my @file; # file content10.my $lineno = 0;11. 12.my $filename = @ARGV[0];13.if ($filename) {14. open( BOMFILE, $filename ) || die "Could not open source file for reading.";15. while (<BOMFILE>) {16. if ($lineno++ == 0) {17. if ( index( $_, '' ) == 0 ) {18. s/^\xEF\xBB\xBF//;19. print "BOM found and removed.\n";20. }21. else { print "No BOM found.\n"; }22. }23. push @file, $_ ;24. }25. close (BOMFILE) || die "Can't close source file after reading.";26. 27. open (NOBOMFILE, ">$filename") || die "Could not open source file for writing.";28. foreach $line (@file) {29. print NOBOMFILE $line;30. }31. close (NOBOMFILE) || die "Can't close source file after writing.";32. }33.else { # STDIN -> STDOUT34. while (<>) {35. if (!$lineno++) {36. s/^\xEF\xBB\xBF//;37. }38. push @file, $_ ;39. }40. 41. foreach $line (@file) {42. print $line;43. }44. }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
Só que esta página não contem mais conteúdo algum!
áéíó´´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 )