ruby ruby-2.0

Reemplazo de iconv Ruby 2.0



ruby-2.0 (4)

No conozco a Ruby pero quiero ejecutar un script donde:

D: /Heather/Ruby/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb: 45: en `require '': no ​​se puede cargar dicho archivo - iconv (LoadError)

funciona de alguna manera si comento el código iconv pero será mucho mejor si puedo recodificar esta parte:

return Iconv.iconv(''UTF-8//IGNORE'', ''UTF-8'', (s + '' '') ).first[0..-2]

sin iconv . Tal vez pueda usar String#encode aquí de alguna manera?


Iconv quedó en desuso (eliminado) en 1.9.3. Todavía puedes instalarlo.

Material de referencia si no está seguro: https://rvm.io/packages/iconv/

Sin embargo, la sugerencia es que usted no usa y prefiere:

string.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?")

API


No he tenido suerte con los distintos enfoques utilizando una cadena de una línea.

Pero escribí un relleno que implementa el scrub String # en MRI pre 2.1, u otros rubíes que no lo tienen.

https://github.com/jrochkind/scrub_rb


Si no está en Ruby 2.1, por lo que no puede usar String#scrub , lo siguiente ignorará todas las partes de la cadena que no estén codificadas en UTF-8 correctamente.

string.encode(''UTF-16'', :invalid => :replace, :replace => '''').encode(''UTF-8'')

El método de codificación hace casi exactamente lo que usted desea, pero con la advertencia de que la codificación no hace nada si cree que la cadena ya es UTF-8. Por lo tanto, necesita cambiar las codificaciones, pasando por una codificación que aún puede codificar el conjunto completo de caracteres Unicode que UTF-8 puede codificar. (Si no lo hace, corromperá cualquier carácter que no esté en esa codificación - ¡7bit ASCII sería una muy mala elección!)