estoy usando rubí 1,9 a analizar el siguiente archivo csv con MacRoman caráctercsv de análisis por comas, comillas dobles y codificación
# encoding: ISO-8859-1
#csv_parse.csv
Name, main-dialogue
"Marceu", "Give it to him ó he, his wife."
me hizo lo siguiente para analizar esto.
require 'csv'
input_string = File.read("../csv_parse.rb").force_encoding("ISO-8859-1").encode("UTF-8")
#=> "Name, main-dialogue\r\n\"Marceu\", \"Give it to him \x97 he, his wife.\"\r\n"
data = CSV.parse(input_string, :quote_char => "'", :col_sep => "/\",/")
#=> [["Name, main-dialogue"], ["\"Marceu", " \"Give it to him \x97 he, his wife.\""]]
Así, el problema es la segunda matriz de datos es de una sola cadena en lugar de 2 cadenas como: ["\"Marceu\"", " \"Give it to him \x97 he, his wife.\""]]
he intentado con :col_sep => ","
(que es el comportamiento por defecto) pero me dio 3 divisiones.
header = CSV.parse(input_string, :quote_char => "'")[0].map{|a| a.strip.downcase unless a.nil? }
#=> ["Name", "main-dialogue"]
Tengo que analizar de nuevo el encabezado ya que no hay comillas dobles aquí.
La salida está pensada para mostrarse en el navegador de nuevo, por lo que el carácter ó
debe aparecer como de costumbre y no como \x97
u otro.
¿Hay alguna manera de resolver los problemas anteriores?
¿Por qué utiliza [ISO-8859-1] (http://en.wikipedia.org/wiki/ISO-8859-1#ISO- 8859-1) cuando sabes el la codificación es [MacRoman] (http://en.wikipedia.org/wiki/MacRoman)? No son lo mismo. –
Gracias por señalarlo. Lo intenté con MacRoman pero el resultado es el mismo que me da una sola división en lugar de dos. Quería obtener la mayor cantidad posible de personajes latinos, lo que me llevó a elegir ISO-8859-1 que también dio 'input_string.valid_encoding?'. ¡Por favor corrígeme si estoy equivocado! – zoras