[Cascavel-pm] [off] Problemas com charset. Dicas para solução?
Andre Carneiro
andregarciacarneiro em gmail.com
Segunda Junho 21 08:07:35 PDT 2010
Achei isso aqui... pode ser interessante no futuro...
http://search.cpan.org/~frew/DBIx-Class-0.08123/lib/DBIx/Class/Manual/Cookbook.pod#MySQL
<http://search.cpan.org/~frew/DBIx-Class-0.08123/lib/DBIx/Class/Manual/Cookbook.pod#MySQL>
Cheers!
Em 21 de junho de 2010 02:01, breno <breno em rio.pm.org> escreveu:
> 2010/6/20 Andre Carneiro <andregarciacarneiro em gmail.com>:
> >
> >
> >>
> >> Segue um exemplo de pequenas frases com problemas:
> >> CAF� DA TARDE
> >> --> deveria ser "CAFÉ DA TARDE"
> >>
> >> Café
> >> --> deveria ser "Café"
> >>
> >> REUNI�ES INTERNAS
> >> --> deveria ser "REUNIÕES INTERNAS"
> >>
> >>
> >
> > A codificação de caracteres do mysqldump está diferente da configuração
> do
> > 'locales' do S.O. de quem criou o dump, e/ou diferente da codificação de
> > caracteres do próprio mysql. Esse é o problema.
> >
> > Você pode tentar usar esse script na linha de comando:
> > <code>
> > user$ perl -MEncode -e 'open my $ndump ,">","/tmp/meunovodump.sql"
> > while(<>){my $line = $_; my $nline = decode "iso-8859-1",$line; $nline =
> > encode "utf-8",$nline; print $ndump $nline;}close $ndump;'
> > path/para/o/dump/cagado.sql
> > </code>
> > Isso lê o arquivo com a codificação errada, linha a linha, converte cada
> > linha de iso-8859-1 para utf-8 e escreve num novo arquivo em /tmp.
> >
> > O que é estranho, é que você disse que a página está em utf-8. O código
> do
> > dump também parece estar em UTF-8, portanto não deveria estar exibindo
> > caracteres 'idiotas'. Sugiro que você vá saber primeiro qual é a
> codificação
> > em todo o caminho do fluxo desses dados, desde S.O., máquinas etc. para
> > saber exatamente para qual codificação você deve converter os seus dados.
> >
>
> Se funciona para registros novos, de repente até uma subsituição
> simples no dump (com vim ou perl) já resolveria. Mudar os comandos do
> dump pra apenas alterar as entradas com problemas sem fazer drop nas
> tabelas ou modificar índices não me parece um grande desafio (por
> outro lado não sei a complexidade do modelo). Quanto a adivinhar a
> codificação, os arquivos gerados pelo mysqldump costumam definir isso
> dentro do arquivo (procure por SET NAMES $foo). Na pior das hipóteses,
> abra o dump no vim (ou no perl), e veja qual código ele representa.
> Daí ou tente fazer a conversão apropriada (como Blabos e Andre
> sugeriram) ou troque pela correta via substituição simples.
>
> A título de "não cometamos o mesmo erro no futuro", lembre-se que dá
> pra forçar charset no mysqldump (veja a opção
> --default-character-set=$foo)
>
>
> http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_default-character-set
>
> E que devemos sempre testar backups antes de dependermos deles :-)
>
> []s
>
> -b
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
--
André Garcia Carneiro
Analista/Desenvolvedor Perl
(11)82907780
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20100621/c685f76a/attachment.html>
Mais detalhes sobre a lista de discussão Cascavel-pm