ruby 1.9: invalid séquence d'octets en UTF-8

Je suis en train d'écrire un robot en Ruby (1.9) qui consomme beaucoup de HTML à partir d'un lot de random sites.

Lorsque vous essayez d'extraire les liens, j'ai décidé de l'utiliser juste .scan(/href="(.*?)"/i) au lieu de nokogiri/hpricot (grands speedup). Le problème est que je reçois beaucoup de "invalid byte sequence in UTF-8" erreurs.

De ce que j'ai compris, le net/http de la bibliothèque ne dispose pas de l'encodage des options spécifiques et les trucs qui vient en est fondamentalement pas correctement étiquetés.

Quelle serait la meilleure façon de travailler avec les données entrantes? J'ai essayé .encode avec la remplacer et invalide le réglage des options, mais sans succès jusqu'à présent...

  • quelque chose qui pourrait casser les personnages, mais conserve la chaîne valable pour d'autres bibliothèques: valid_string = untrusted_string.unpack(‘C*’).pack(‘U*’)
  • D'avoir exactement le problème, essayé la même chose d'autres solutions. Pas d'amour. Essayé de Marc, mais il semble fausse tout. Êtes-vous sûr 'U*' annule 'C*'?
  • Non, il ne le fait pas 🙂 j'ai juste utilisé que dans un webcrawler où je me soucie de la 3e partie des bibliothèques de ne pas tomber plus que moi sur le sujet d'une phrase ici et là.
InformationsquelleAutor Marc Seeger | 2010-06-06