jmhodges/rchardet

ISO-8859-2 detected instead of MACROMAN for Excel CSV Mac format exported files

brauliobo opened this issue · 6 comments

>> d=CharDet.detect (csv=File.read('/home/braulio/Downloads/listateste.csv'))
=> {"encoding"=>"ISO-8859-2", "confidence"=>0.2136145055663291}
>> csv
=> "Produtor;PRODUTO;Unidade;Valor\rS\xEATIO UWADA;ALFACE AMERICANA ; Unidade ;2,2\rS\xEATIO UWADA;ALFACE CRESPA ; Unidade ;2\rS\xEATIO UWADA;ALFACE LISA ; Unidade ;2\rS\xEATIO UWADA;ALFACE MIMOSA; Unidade ;2\rS\xEATIO UWADA;ALFACE ROMANA; Unidade ;2\rS\xEATIO UWADA;ALFACE ROXA; Unidade ;2\rS\xEATIO UWADA;ALMEIR\xCCO FINO ; ma\x8Do ;2\rS\xEATIO UWADA;ALMEIR\xCCO P\xCCO DE A\x82\xF2CAR; ma\x8Do ;2\rS\xEATIO UWADA;CATALONHA; ma\x8Do ;2,5\rS\xEATIO UWADA;ESCAROLA; Unidade ;2\rS\xEATIO UWADA;ESPINAFRE ; ma\x8Do ;3\rS\xEATIO UWADA;MIX SALSA/MANJERIC\xCCO ; ma\x8Do ;1,8\rS\xEATIO UWADA;NABO ; Unidade ;2\rS\xEATIO UWADA;SALSA ; ma\x8Do ;1,8\rS\xEATIO SOL NASCENTE;ALHO POR\xEE ; Unidade ;4\rS\xEATIO SOL NASCENTE;ACELGA CHINESA; Unidade ;2,5\rS\xEATIO SOL NASCENTE;COUVE MANTEIGA ; ma\x8Do ;2\rS\xEATIO SOL NASCENTE;ERVA DOCE ; Unidade ;3\rS\xEATIO SOL NASCENTE;REPOLHO VERDE ; Unidade ;3\rS\xEATIO SOL NASCENTE;REPOLHO ROXO ; Unidade ;3\rS\xEATIO SOL NASCENTE;INHAME - 500G; pacote  ;3\rS\xEATIO SOL NASCENTE;RADICCHIO ; Unidade ;2,5\r\n"
>> csv.encode 'UTF-8'
=> "Produtor;PRODUTO;Unidade;Valor\rS\xEATIO UWADA;ALFACE AMERICANA ; Unidade ;2,2\rS\xEATIO UWADA;ALFACE CRESPA ; Unidade ;2\rS\xEATIO UWADA;ALFACE LISA ; Unidade ;2\rS\xEATIO UWADA;ALFACE MIMOSA; Unidade ;2\rS\xEATIO UWADA;ALFACE ROMANA; Unidade ;2\rS\xEATIO UWADA;ALFACE ROXA; Unidade ;2\rS\xEATIO UWADA;ALMEIR\xCCO FINO ; ma\x8Do ;2\rS\xEATIO UWADA;ALMEIR\xCCO P\xCCO DE A\x82\xF2CAR; ma\x8Do ;2\rS\xEATIO UWADA;CATALONHA; ma\x8Do ;2,5\rS\xEATIO UWADA;ESCAROLA; Unidade ;2\rS\xEATIO UWADA;ESPINAFRE ; ma\x8Do ;3\rS\xEATIO UWADA;MIX SALSA/MANJERIC\xCCO ; ma\x8Do ;1,8\rS\xEATIO UWADA;NABO ; Unidade ;2\rS\xEATIO UWADA;SALSA ; ma\x8Do ;1,8\rS\xEATIO SOL NASCENTE;ALHO POR\xEE ; Unidade ;4\rS\xEATIO SOL NASCENTE;ACELGA CHINESA; Unidade ;2,5\rS\xEATIO SOL NASCENTE;COUVE MANTEIGA ; ma\x8Do ;2\rS\xEATIO SOL NASCENTE;ERVA DOCE ; Unidade ;3\rS\xEATIO SOL NASCENTE;REPOLHO VERDE ; Unidade ;3\rS\xEATIO SOL NASCENTE;REPOLHO ROXO ; Unidade ;3\rS\xEATIO SOL NASCENTE;INHAME - 500G; pacote  ;3\rS\xEATIO SOL NASCENTE;RADICCHIO ; Unidade ;2,5\r\n"
>> csv.force_encoding Encoding::MACROMAN
=> "Produtor;PRODUTO;Unidade;Valor\rS\xEATIO UWADA;ALFACE AMERICANA ; Unidade ;2,2\rS\xEATIO UWADA;ALFACE CRESPA ; Unidade ;2\rS\xEATIO UWADA;ALFACE LISA ; Unidade ;2\rS\xEATIO UWADA;ALFACE MIMOSA; Unidade ;2\rS\xEATIO UWADA;ALFACE ROMANA; Unidade ;2\rS\xEATIO UWADA;ALFACE ROXA; Unidade ;2\rS\xEATIO UWADA;ALMEIR\xCCO FINO ; ma\x8Do ;2\rS\xEATIO UWADA;ALMEIR\xCCO P\xCCO DE A\x82\xF2CAR; ma\x8Do ;2\rS\xEATIO UWADA;CATALONHA; ma\x8Do ;2,5\rS\xEATIO UWADA;ESCAROLA; Unidade ;2\rS\xEATIO UWADA;ESPINAFRE ; ma\x8Do ;3\rS\xEATIO UWADA;MIX SALSA/MANJERIC\xCCO ; ma\x8Do ;1,8\rS\xEATIO UWADA;NABO ; Unidade ;2\rS\xEATIO UWADA;SALSA ; ma\x8Do ;1,8\rS\xEATIO SOL NASCENTE;ALHO POR\xEE ; Unidade ;4\rS\xEATIO SOL NASCENTE;ACELGA CHINESA; Unidade ;2,5\rS\xEATIO SOL NASCENTE;COUVE MANTEIGA ; ma\x8Do ;2\rS\xEATIO SOL NASCENTE;ERVA DOCE ; Unidade ;3\rS\xEATIO SOL NASCENTE;REPOLHO VERDE ; Unidade ;3\rS\xEATIO SOL NASCENTE;REPOLHO ROXO ; Unidade ;3\rS\xEATIO SOL NASCENTE;INHAME - 500G; pacote  ;3\rS\xEATIO SOL NASCENTE;RADICCHIO ; Unidade ;2,5\r\n"
>> csv.encode 'UTF-8'
=> "Produtor;PRODUTO;Unidade;Valor\rSÍTIO UWADA;ALFACE AMERICANA ; Unidade ;2,2\rSÍTIO UWADA;ALFACE CRESPA ; Unidade ;2\rSÍTIO UWADA;ALFACE LISA ; Unidade ;2\rSÍTIO UWADA;ALFACE MIMOSA; Unidade ;2\rSÍTIO UWADA;ALFACE ROMANA; Unidade ;2\rSÍTIO UWADA;ALFACE ROXA; Unidade ;2\rSÍTIO UWADA;ALMEIRÃO FINO ; maço ;2\rSÍTIO UWADA;ALMEIRÃO PÃO DE AÇÚCAR; maço ;2\rSÍTIO UWADA;CATALONHA; maço ;2,5\rSÍTIO UWADA;ESCAROLA; Unidade ;2\rSÍTIO UWADA;ESPINAFRE ; maço ;3\rSÍTIO UWADA;MIX SALSA/MANJERICÃO ; maço ;1,8\rSÍTIO UWADA;NABO ; Unidade ;2\rSÍTIO UWADA;SALSA ; maço ;1,8\rSÍTIO SOL NASCENTE;ALHO PORÓ ; Unidade ;4\rSÍTIO SOL NASCENTE;ACELGA CHINESA; Unidade ;2,5\rSÍTIO SOL NASCENTE;COUVE MANTEIGA ; maço ;2\rSÍTIO SOL NASCENTE;ERVA DOCE ; Unidade ;3\rSÍTIO SOL NASCENTE;REPOLHO VERDE ; Unidade ;3\rSÍTIO SOL NASCENTE;REPOLHO ROXO ; Unidade ;3\rSÍTIO SOL NASCENTE;INHAME - 500G; pacote  ;3\rSÍTIO SOL NASCENTE;RADICCHIO ; Unidade ;2,5\r\n"

pretty low confidence ... maybe that encoding is not supported for detection ?

@grosser is there a list of supported encodings?

I have no idea :D
Just trying to keep the lights on / merge from people that seems to understand what they are doing :D

Mac OS Roman isn't supported for detection. I'm having the same issue. It's important because I suspect (since this is the 3rd project where I've had to do such a thing) a lot of people are using this to detect the text encoding in CSV files, and Excel for Mac (even 2011 and 2016[!!!]) exports CSV files as Mac OS Roman, with no option to change it. 2011 even uses \r line endings (2016 moved to \r\n), but String#encode will take care of those just fine regardless of the source encoding.

Going to fork and try to come up with a detector for Mac OS Roman, we'll see how far I get. I don't need that license header for the original Netscape code up top, do I, since it's an entirely new file?

nope unless you copy-paste substantial parts of it I guess ... and even then I don't think anyone cares / would track that down ;)

Any success with Mac OS Roman encoding detection?