» Ruby – hvordan man aflæser tegnsættet på en streng
Skrevet af Kasper Tidemann d. 22/3 2010 kl. 23:02Når du fx uploader en CSV-fil på 2 KB i Ruby on Rails, så løber du ofte ind i problemer når du forsøger at afkode tegnsættet i din Tempfile-datastreng fra params[:min_upload_form][:uploaded_fil] (eller hvad du har kaldt dit inputfelt).
Hvis du vil holde alt til ét tegnsæt, så kan du gøre brug af Iconv.conv(’UTF-8′, <et eller andet tegnsæt> , streng) til at konvertere data fra inputfeltet til UTF-8. Men for at få iconv()-wrapperen til at fungere ordentligt, skal den vide hvad der skal konverteres fra. Så hvordan opnår du den viden?
Prøv at bruge Ruby gem’en rchardet af Jeff Hodges. Her er et eksempel på hvordan den kan bruges:
require ‘rchardet’
[...]
cd = CharDet.detect(params[:min_upload_form][:uploaded_fil])
tegnsaet = cd['encoding']konverteret_streng = Iconv.conv(’UTF-8′, tegnsaet, params[:min_upload_form][:uploaded_fil])
Ovenstående er ikke skudsikkert, men det er da en start. Hvis du har alternative idéer i den forbindelse, så kommentér meget gerne så vi andre kan blive klogere.




