O Spesa foi criado usando a codificação ISO-8859-1, principalmente pelo fato de achar que o Ruby fazia UTF-8 "nas coxas". Como houve uma preocupação muito maior com o lançamento do Rails 1.2, através do mixin "Chars" — embora seja feito no framework e não na linguagem — e estou migrando meu projeto para esta nova versão, resolvi mudar a codificação de ISO para UTF-8.

Migrar o banco de dados foi bem simples, já que o PHPMyAdmin, quando exporta as informações, automaticamente converte para UTF-8. A única coisa que é preciso fazer, é importar os dados também pelo PHPMyAdmin (não consegui fazer direto pelo shell do MySQL).

Outra coisa que você tem que fazer é converter todos os arquivos — classes, templates e controllers — para UTF-8. Mas cuidado: não salve com o BOM. Se você salvar, o Ruby acusará erros de compilação.

Não se esqueça de atualizar seu código caso use funções que manuseiam strings. Veja um exemplo abaixo:

#retornará 15
puts 'João Silvério'.length
 
#retornará 13
puts 'João Silvério'.chars.length

Daqui para frente, vamos fazer nossos aplicativos com UTF-8. Capisce?

Comentários #

#1 Walter Cruz disse:
14 Mar 07, 02:05PM

Curioso. Hoje de manhã estava discutindo codificação de caracteres com um amigo meu.

Por enquanto, ainda vou de latin-1.

#2 Ricardo Momm disse:
15 Mar 07, 09:15AM

Bom saber que mais gente desenvolve websites em rails aqui no brasil hehe! O site spesa.com.br é muito bom, estou usando para testar.

[]´s

#3 Gerhard Bauer disse:
28 Abr 07, 10:13PM

Para o Ruby on Rails e MySQL trabalharem em UTF-8, adicionei a linha "encoding: utf8" (tudo junto, sem traço!) no arquivo database.yml na pasta do config, ficando assim:

development:
adapter: mysql
encoding: UTF8
database: world
username: root
password: xpto
host: localhost

Adicionalmente, como estou usando o RadRails, tive que setar no menu Window, Preferences, General, Content Types, Text, Properties, Preferences (outra vez!), então ADD para adicionar *.rhtml e colocar no Default Encoding UTF-8 e sair salvando.
Dessa forma, os programas .rhtml escritos no RadRails estarão codificados também em UTF-8 e a acentuação das mensagens sairá corretamente no html no browser! Veja meu exemplo de código que imprime a mensagem de erro com acentos corretamente:

- Este código não existe na tabela!

Valeu, Nando, por sua dica que motivou um amador como eu a alterar a codificação da minha aplicação em Ruby on Rails de ISO-8859-1 para UTF-8!

#4 Helder disse:
16 Jun 07, 06:56AM

Olha...

Estou cheio de duvidas sobre o encoding. Meu Debian tem por default o UTF-8. O Banco de dados MySQL esta em latin1 (eu acho)...

Li em algum lugar que devo preferir o UTF-8. Será que devo colocar o uft-8 tambem no application.rb no metodo before_page ?

#5 Nando Vieira disse:
17 Jun 07, 12:49PM

Nota: Reproduzindo mensagem enviada por e-mail para o Helder

> Meu banco MYSQL esta em latin1. Será que devo converter para UTF-8.
Se você puder converter para UTF-8, um tanto quanto melhor. Caso contrário, você deve continuar definindo o content-type do jeito que já está fazendo.

> Outra pergunta como fazer para nao gravar o BOM que voce cita em seu blog ?
Isso depende do editor. No caso do Linux, o Gedit já faz isso automaticamente. No SciTe essa funcionalidade está em File > Encoding > UTF-8 Cookie.

Além disso, utilize as funções de UTF-8 do RoR é melhor porque você não terá problemas caso precise usar funções que lidem com a string. Por exemplo, use "maçã".chars.length em vez de "maçã".length.

#6 Renato Cardoso disse:
18 Jan 08, 09:55PM

Grande Fernando !

muito legal o texto!

#7 Igor Ferreira da Costa disse:
11 Mar 08, 03:31PM

Meus caros...

Descordo da idéia, pois estou desenvolvendo um aplicativo onde faço a geração de xml's e estou justamente com essa difículdade. Certo que ao visualiza o meu xml ele aparece perfeito com "ç´`..." com tudo que tem direito, mas em seu fonte ainda permanece o padrão UTF-8. Ai é que vem o problema, para efeito de calculos hash isso dá uma diferença muito grande.

#8 Comin Blog » Posts interessantes sobre RubyOnRails! disse:
16 Maio 09, 11:00PM

[...] No link abaixo o Nando Vieira fala sobre a codificação em arquivos, que sempre foram uma parte complicadade se implementar… http://simplesideias.com.br/migrando-de-iso-8859-1-para-utf-8-no-rails/ [...]

#9 Codificação de Caracteres no Eclipse « Flávio Araújo disse:
03 Nov 09, 12:01PM

[...] http://simplesideias.com.br/migrando-de-iso-8859-1-para-utf-8-no-rails/ [...]

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

jQuery: Dominando o framework

Você quer aprender a usar jQuery de verdade? Então chegou a hora! Neste workshop você verá como funciona este framework de JavaScript, entendendo todos os aspectos que fazem do jQuery uma das melhores ferramentas para desenvolvimento de interfaces.

Saiba mais Fechar

Conheça também o HOWTO