Pregunta

Cómo determinar si un carácter es un carácter chino usando Ruby?

¿Fue útil?

Solución

Un artículo interesante sobre codificaciones en Ruby: http://blog.grayproductions.net/articles/bytes_and_characters_in_ruby_18 (es parte de una serie - comprobar la tabla de contenido en el inicio del artículo también)

No he utilizado caracteres chinos antes, pero esto parece ser la lista apoyada por Unicode: http: / /en.wikipedia.org/wiki/List_of_CJK_Unified_Ideographs . Asimismo, tomamos nota de que es un sistema unificado incluyendo japonés y coreanos (algunos caracteres se comparten entre ellos) - no estoy seguro si se puede distinguir que son chino sólo

.

Creo que se puede comprobar si se trata de un personaje CJK llamando a esto en la cadena str y el carácter con el índice n:

def check_char(str, n)
  list_of_chars = str.unpack("U*")
  char = list_of_chars[n]
  #main blocks
  if char >= 0x4E00 && char <= 0x9FFF
    return true
  end
  #extended block A
  if char >= 0x3400 && char <= 0x4DBF
    return true
  end
  #extended block B
  if char >= 0x20000 && char <= 0x2A6DF
    return true
  end
  #extended block C
  if char >= 0x2A700 && char <= 0x2B73F
    return true
  end
  return false
end

Otros consejos

Ruby 1.9

#encoding: utf-8   
 "漢" =~ /\p{Han}/
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top