encoding ruby
Ruby `split '': secuencia de bytes no vĂ¡lida en UTF-8(ArgumentError) (2)
Ruby es algo sensible a los problemas de codificación de caracteres. Puedes hacer una serie de cosas que podrían resolver tu problema. Por ejemplo:
Ponga un comentario de codificación en la parte superior de su archivo fuente.
# encoding: utf-8
Codifica explícitamente tu línea antes de dividir.
line = line.encode(''UTF-8'').split("|")
Reemplace los caracteres no válidos, en lugar de generar una excepción Encoding :: InvalidByteSequenceError.
line.encode(''UTF-8'', :invalid => :replace).split("|")
Pruebe estas sugerencias y actualice su pregunta si ninguna de ellas le funciona. ¡Espero eso ayude!
Estoy intentando rellenar el objeto de la película, pero al analizar el archivo u.item
, u.item
este error:
`split '': secuencia de bytes no válida en UTF-8 (ArgumentError)
File.open("Data/u.item", "r") do |infile|
while line = infile.gets
line = line.split("|")
end
end
El error se produce solo cuando se intenta dividir las líneas con una puntuación internacional elegante.
Aquí hay una muestra
543 | Misérables, Les (1995) | 01-Ene-1995 || http: //us.imdb.com/M/title-exact? Mis% E9rables% 2C% 20Les% 20% 281995% 29 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0
¿Hay algún trabajo alrededor?
Tuve que forzar la codificación de cada línea a iso-8859-1 (que es el conjunto de caracteres europeo) ... http://en.wikipedia.org/wiki/ISO/IEC_8859-1
a=[]
IO.foreach("u.item") {|x| a << x}
m=[]
a.each_with_index {|line,i| x=line.force_encoding("iso-8859-1").split("|"); m[i]=x}