ruby utf-8 character-encoding utf8mb4

¿Cómo eliminar 4 byte utf-8 caracteres en Ruby?



character-encoding utf8mb4 (1)

Lo siguiente parece funcionar para mí en Ruby 1.9.3:

input.each_char.select{|c| c.bytes.count < 4 }.join('''')

Por ejemplo:

input = "hello /xF0/xA9/xB6/x98 world" # includes U+29D98 input.each_char.select{|c| c.bytes.count < 4 }.join('''') # ''hello world''

Como utf8 de MySQL no admite caracteres de 4 bytes, estoy buscando una forma de detectar y eliminar cualquier carácter utf8 de 4 bytes de una cadena en Ruby. Entiendo que puedo actualizar mi tabla para usar utf8m4, pero por un par de razones no es posible o la solución deseada.

Simplemente codificar la cadena a ASCII eliminará estos caracteres, pero también eliminará todos los demás caracteres que no sean ASCII, lo cual no es bueno.