Detectando UTF8 en ruby
Enviado por clbustos el Sáb, 24/12/2005 - 03:59.
Clasificado en:
Trabajando en catori, me di cuenta que era muy conveniente transformar todos los datos de los archivos, tales como el nombre del artista y ese tipo de cosas, en UTF-8. El problema, claro está, es saber si el string ya está en el código citado.
La siguiente adición a la clase String permite, de forma muy bruta, determinar si estamos ante ascii, utf8 o iso-8859-1. Para convertir a utf8, se requiere tener la extensión 'iconv' de ruby.
Cuando tenga un poco de tiempo, voy a portar a C esta adición, ya que la utilizo mucho y en el lenguaje de la letrita podría ganar algunos valiosos segundos
- require "iconv"
- class String
- def encoding
- cuenta=0
- ascii=true
- self.each_byte{|byte|
- if cuenta>0
- if (byte >> 6) != 0b10
- return "iso8859"
- else
- cuenta-=1
- end
- elsif(byte & 0x80)
- ascii=false
- if (byte >> 5) == 0b110
- cuenta=1
- elsif (byte >> 4) == 0b1110
- cuenta=2
- elsif (byte >> 3) == 0b11110
- cuenta=3
- else
- return "iso8859"
- end
- end
- }
- return ascii ? "ascii":"utf8"
- end
- def to_utf8
- (self.encoding=='iso8859') ? Iconv.new("utf-8","iso-8859-1").iconv(self.to_s) : self
- end
- end
- 3276 lecturas

Feliz Navidad man :D que lo disfrutes en compañia de tus seres amados :)
Gracias, Stan. Lo mismo deseo para ti.
Como aún falta año nuevo, para esas fechas te doy el abrazo virtual :)
Claudio Bustos
Webmaster de Apsique y de este sitio.
Enviar un comentario nuevo