[RUBY] Lors de l'importation de CSV avec Rails, il était vraiment facile d'utiliser la commande nkf

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

problème

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 ...

Solution

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.

point important

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.

Recommended Posts

Lors de l'importation de CSV avec Rails, il était vraiment facile d'utiliser la commande nkf
Comme la commande du utilisée lorsque la capacité est pleine est difficile à utiliser, j'ai essayé de l'envelopper avec du rubis
Pourquoi puis-je utiliser la commande rails installée avec gem? ??
Que faire si la commande rails devient inutilisable
Ce à quoi j'étais accro lors de la mise en œuvre de l'authentification Google avec des rails
Lorsqu'un débutant crée une application personnelle avec des rails, la procédure pour l'amener au point de départ de toute façon.
Est-il facile à utiliser pour l'utilisateur lors de la mise en œuvre de fonctions à usage général? Soyons conscients de
Lorsque vous souhaitez ajouter une colonne de type chaîne avec une longueur limitée avec la commande `rails generate migration`
[Rails] J'étais accro aux paramètres nginx lors de l'utilisation d'Action Cable.
Problèmes auxquels j'étais accro lors de la création de l'environnement digdag avec docker
Rendez Firebase Analytics simple et facile à utiliser avec les modèles Singleton et Builder
[Rails] Quand j'utilise form_with, l'écran se fige! ??
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Un moyen très simple d'utiliser enum avec JSP
Essayez de résumer la disposition commune avec des rails
Facile à afficher Hello World avec Rails + Docker
Comment supprimer le tweet associé à l'utilisateur lorsque vous le supprimez en même temps
[Rails] Solution lorsque l'erreur "visite de la méthode non définie" "apparaît lors de l'utilisation de Capybara avec Rspec
Un avertissement s'affiche lorsque vous essayez d'utiliser un entier énorme avec les variables spéciales $ 1, $ 2, $ 3 ...
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Limiter les fichiers créés avec la commande rails g controller
[Rails] Je ne sais pas comment utiliser le modèle ...
Accro au Webpacker fourni en standard avec Rails 6
Après avoir publié un article avec Rails Simple Calendar, je souhaite le refléter dans le calendrier.
Lorsque j'ai essayé de faire défiler automatiquement avec JScrollBar, le gestionnaire d'événements n'a été dessiné qu'une seule fois.
Lorsque j'ai essayé d'exécuter Azure Kinect DK avec Docker, il a été bloqué par le CLUF
[Rails] Que faire lorsque la vue se réduit lorsqu'un message est affiché avec la méthode des erreurs
Session était un cookie conçu pour être effacé lorsque le navigateur était fermé et était une méthode pour l'échanger: Tutoriel Rails Note - Qu'est-ce qu'une session Rails?