Beim Importieren einer CSV-Datei mit Rails habe ich sie so implementiert.
def read_csv
begin
rows = CSV.read(file, encoding: 'UTF-8')
rescue CSV::MalformedCSVError
begin
#CSV-Datei ist UTF-Schalten Sie, wenn nicht 8_Lesen Sie in JIS
rows = CSV.read(file, encoding: 'Shift_JIS')
rescue CSV::MalformedCSVError, Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError
#CSV-Datei ist UTF-8 ・ Schicht_Wenn es nicht JIS ist
@error = 'Die Dateicodierung ist UTF-8 oder Shift_Es ist nicht JIS.'
end
end
rows&.shift #Entfernen Sie den Header
rows
end
Es gibt viele Ausnahmen, was problematisch ist, und es gibt nur zwei Zeichencodes, die überhaupt importiert werden können ...
Anscheinend kann alles mit einem Modul namens "nkf" konvertiert werden ... https://docs.ruby-lang.org/ja/latest/class/NKF.html
--Installieren Sie nkf auf Ihrem PC
brew install nkf
nkf -w --Überschreiben Sie den Pfad der Datei, die Sie konvertieren möchten
Sie können diesen Befehl verwenden, um ihn in ein gutes Gefühl umzuwandeln.
def read_csv(file)
system("nkf -w --overwrite #{file.path}")
rows = CSV.read(file)
rows&.shift #Entfernen Sie die Kopfzeile in der ersten Zeile
rows
end
Der Code ist sauber.
Bitte beachten Sie, dass der Befehl nkf
nur verwendet werden kann, wenn nkf zuvor mit dem Befehl Brew install nkf
usw. installiert wurde.
Recommended Posts