Detectando UTF8 en ruby

Enviado por clbustos el Sáb, 24/12/2005 - 03:59.

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

  1.  require "iconv"
  2.  class String
  3.   def encoding
  4.   cuenta=0
  5.   ascii=true
  6.   self.each_byte{|byte|
  7.   if cuenta>0
  8.   if (byte >> 6) != 0b10
  9.   return "iso8859"
  10.   else
  11.   cuenta-=1
  12.   end
  13.   elsif(byte & 0x80)
  14.   ascii=false
  15.   if (byte >> 5) == 0b110
  16.   cuenta=1
  17.   elsif (byte >> 4) == 0b1110
  18.   cuenta=2
  19.   elsif (byte >> 3) == 0b11110
  20.   cuenta=3
  21.   else
  22.   return "iso8859"
  23.   end
  24.   end
  25.   }
  26.   return ascii ? "ascii":"utf8"
  27.   end
  28.   def to_utf8
  29.   (self.encoding=='iso8859') ? Iconv.new("utf-8","iso-8859-1").iconv(self.to_s) : self
  30.   end
  31.  end
Imagen de Stan

Feliz Navidad man :D que lo disfrutes en compañia de tus seres amados :)

Enviado por Stan (no verificado) el Dom, 25/12/2005 - 07:03.
Imagen de clbustos

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.

Enviado por clbustos el Lun, 26/12/2005 - 21:37.

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
If you have a Gravatar account, used to display your avatar.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato