[RAILS] [Ruby] Caractère multi-octets non valide (UTF-8) Méthode de résolution des erreurs [CSV]

Actuellement, j'aide à collecter des données pour la consultation des restaurants en externalisant (grattage du journal des repas avec l'application Rails et le script ruby), mais j'ai eu du mal avec une erreur de codage des caractères, alors voici la solution Je vais le partager.

environnement

Code d'erreur


SyntaxError ((irb):1: invalid multibyte char (UTF-8))

Lorsque j'ai exécuté le fichier de grattage ruby à partir du terminal, j'ai eu cette erreur.

Apparemment, le code de caractère est incorrect et une erreur se produit. Windows a un code de caractère par défaut ANSI lorsque vous enregistrez un fichier, et vous devez changer ce code de caractère en UTF-8 et l'enregistrer!

** Il suffit de démarrer le Bloc-notes et de changer le code de caractère de ANSI à UTF-8 (aucune nomenclature recommandée) lorsque vous faites glisser et déposez le fichier que vous souhaitez modifier et enregistrez-le sous un nom! ** ** Référence

Cela n'a rien à voir avec la programmation. .. ww

J'ai changé le code du script de UTF-8 à cp932 et j'ai fait diverses choses, mais cela n'avait pas beaucoup de sens. .. Lol

À propos, cela seul n'a pas résolu l'erreur ...

Au final, le code ressemble à ceci ↓

scrp_tabelog.rb


CSV.open('new_log_file.csv', "w", liberal_parsing: true) do |csv|
  csv << ['Numéro de séquence du contrat', 'Nom du magasin', 'Date', 'Note d'évaluation', '', '', '', '', '', '', '', 'Nombre d'avis(Cas)', 'Qui est allé(Homme)', '行きたいHomme(Homme)']
  csv << ['', '', '', 'Complet', 'Nuit', 'Le midi', 'Cuisine / goût', 'un service', 'atmosphère', 'CP', 'Liqueur / boisson']

  CSV.foreach('shop_point_list.csv', headers: false, liberal_parsing: true) do |recent_row|
    #Ecrire le processus
  end
end

Le point ici est ** libéral_parsing: true **. Depuis ruby 2.4.0, c'est une option ajoutée à CSV, et si elle est définie sur true, il semble que les guillemets apparaissant dans les données puissent être analysés si les données ne sont pas placées entre guillemets.

Maintenant, j'ai réussi à extraire les données sans causer d'erreur!

Merci d'avoir lu jusqu'au bout!

Je sort ce que j'ai appris tous les jours! Nous vous serions reconnaissants de bien vouloir commenter vos impressions et suggestions!

Recommended Posts

[Ruby] Caractère multi-octets non valide (UTF-8) Méthode de résolution des erreurs [CSV]
[Ruby on Rails] méthode indéfinie ʻid'for nil: méthode de résolution d'erreur NilClass
Méthode de résolution d'erreur Spring Boot + PostgreSQL
[Ruby on Rails] Suivez la méthode indéfinie de la fonction ʻid'for nil: Résolvez l'erreur NilClass
[Ruby on Rails] Aucune erreur de méthode méthode non définie `devise_for'error resolution