Lors de l'importation d'un fichier CSV avec Rails, je l'ai implémenté comme ceci.
def read_csv
begin
rows = CSV.read(file, encoding: 'UTF-8')
rescue CSV::MalformedCSVError
begin
#le fichier csv est UTF-Shift sinon 8_Lire dans JIS
rows = CSV.read(file, encoding: 'Shift_JIS')
rescue CSV::MalformedCSVError, Encoding::InvalidByteSequenceError, Encoding::UndefinedConversionError
#le fichier csv est UTF-8 ・ Maj_Si ce n'est pas JIS
@error = 'Le codage du fichier est UTF-8 ou Shift_Ce n'est pas JIS.'
end
end
rows&.shift #Retirez l'en-tête
rows
end
Il y a beaucoup d'exceptions, ce qui est gênant, et il n'y a que deux codes de caractères qui peuvent être importés en premier lieu ...
Apparemment, tout peut être converti en utilisant un module appelé nkf
...
https://docs.ruby-lang.org/ja/latest/class/NKF.html
--Installez nkf sur votre PC
brew install nkf
nkf -w --écraser le chemin du fichier que vous souhaitez convertir
Vous pouvez utiliser cette commande pour le convertir en une bonne sensation.
def read_csv(file)
system("nkf -w --overwrite #{file.path}")
rows = CSV.read(file)
rows&.shift #Supprimer l'en-tête sur la première ligne
rows
end
Le code est propre.
Veuillez noter que la commande nkf
ne peut être utilisée que si nkf est installé avec la commande brew install nkf
, etc. à l'avance.