2012-07-23 10 views
9

Próbuję pobrać plik zip ze strony internetowej i umieścić te dane w tabeli. Pobieranie działa już wcześniej, ale nagle już nie jest. Pojawia się problem "` write ': "\ xB6" z ASCII-8BIT na UTF-8 (Encoding :: UndefinedConversionError). Bardzo dziwne, nic się nie zmieniło od czasu ostatniego uruchomienia skryptu. Oto część kodu, która ma problemy. Używam klejnotu, który pozwala mi parsować plik DBF w pliku zip.Kodowanie niezdefiniowanego błędu konwersji - Ruby na szynach, błąd przy zapisie

Oto kod:

`write': "\xB6" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) 

Dzięki za pomoc

UPDATE: biegnę wewnątrz szyn, oczywiście. Uruchomiłem skrypt poza środowiskiem szyn i wszystko działało dobrze. Tak więc Rails w jakiś sposób ingeruje w proces pisania.

UPDATE 2: SOLVED - Zmieniłem "w" na "wb" widocznie jest to spowodowane przez szyny 3+. Nie przyszło mi do głowy, aby spróbować tego wcześniej. Mam nadzieję, że to pomoże innym ludziom.

Odpowiedz

2

Prawdopodobnie również mógł to zrobić przekazując

:output_encoding => "binary" 

do File.open, co moim zdaniem byłoby to samo, jak w trybie „WB”, być może bardziej wyraźnie. Ale miła robota wymyślająca "wb" :).

Tak, w Ruby 1.9, który jest znany z kodowania znaków, często trzeba mówić różne rzeczy o kodowaniu, które chcesz, w tym "kodowanie null" "binarne".

Możliwe, że Rails ustawia Encoding.default_external na UTF-8, a File używa numeru Encoding.default_external, co może być przyczyną różnic między szynami a szynami.

Problemy z kodowaniem w Rubim 1.9 mogą bardzo szybko stać się bardzo zagmatwane, z dużą ilością normalnie ukrytego stanu, który może wpływać na to, co się dzieje.

Powiązane problemy