2011-05-10 5 views
0

J'ai un sujet d'un courriel qui vient à mes rails 3 application comme ceci:rails 3 courrier gem

J'essaie de puis enregistrez ce sujet dans ma base de données (MongoDB) comme un champ de chaîne en utilisant mail.subject mais j'obtiens une erreur 'String non valide UTF-8' ??

Quelqu'un sait comment je résous cela?

merci beaucoup rick

Répondre

0

Vous avez montré aucun exemple de code, mais il semble que le sujet n'est pas retourné encodage UTF-8, mais la base de données est. Essayez d'utiliser force_encoding avant de sauvegarder le sujet.

mail.subject.force_encoding("UTF-8") 

EDIT:

Ruby 1.8.7, sans vergogne volé à String.force_encoding() in Ruby 1.8.7 (or Rails 2.x)

require 'iconv' 
class String 
    def to_my_utf8 
    ::Iconv.conv('UTF-8//IGNORE', 'UTF-8', self + ' ')[0..-2] 
    end 
end 

Et puis ...

mail.subject.to_my_utf8 
+0

Salut, je reçois ce message d'erreur lorsque j'essaie ta suggestion des idées? Méthode non définie 'force_encoding 'pour" FW: Économisez près de 2432 000 sur un yacht de luxe en Alaska! ": String – rick

+0

@rick Oh, désolé. Vous devez utiliser Ruby 1.8 alors? Vous devrez utiliser 'iconv'. Voir cette question pour de l'aide à ce sujet: http://stackoverflow.com/questions/4583924/string-force-encoding-in-ruby-1-8-7-or-rails-2-x – ghoppe

+0

merci pour l'aide que ce genre des œuvres mais non par exemple des caractères japonais par exemple quand je reçois ce texte dans un sujet d'un mail ("je ne mange pas de pain") et j'accède au mail.subject ou au mail.subject.to_my_utf8 il vient comme ceci "(\ e $ B% Q% s $ r?) $ Y $ J $$! # \ e (B) \" Je ne mange pas de pain \ "" des idées comment afficher/enregistrer correctement ? Merci beaucoup – rick

Questions connexes