2009-06-26 4 views
2

Je suis en train d'analyser un fichier texte qui contient les citations étranges comme « et » dans « citations normales comme »en Ruby, en essayant de convertir ces citations étranges dans « régulier » cite

J'ai essayé ceci:

text.gsub!("“",'"') 
text.gsub!("”",'"') 

mais quand il est fait, ils sont là encore et apparaissent comme

\x93 and \x94 

donc j'ai essayé d'ajouter que trop avec pas de chance:

text.gsub!('\\x93', '"') 
text.gsub!('\\x94', '"') 

Le problème est, lorsque je tente de montrer ces citations étranges sur une page Web, il fait que le diamant bizarre avec un point d'interrogation symbole:

Répondre

1

Il semble fonctionner:

text = "“foo”" 
=> "\342\200\234foo\342\200\235" 
irb(main):002:0> text.gsub!("“",'"') 
=> "\"foo\342\200\235" 
irb(main):003:0> text.gsub!("”",'"') 
=> "\"foo\"" 

Vous devez utiliser un éditeur hexadécimal pour comprendre tous les codes de caractères impliqués.

0

Re: la deuxième question de savoir pourquoi les citations étranges montrent sur une page Web comme le symbole:

Votre problème est que votre page Web est pas en mode UTF-8. Pour en arriver là, voir http://www.w3.org/International/O-HTTP-charset

Si vous ne pouvez pas changer votre serveur web, ajoutez une ligne meta dans la section de la tête de vos pages web: http://www.utf-8.com/

Larry

0

Vos premiers gsubs devraient travailler . La raison pour laquelle le second jeu de gsubs ne fonctionne pas est que vous utilisez des guillemets simples et double backslash. Essayez l'inverse:

text.gsub!("\x93", '"') 
text.gsub!("\x94", '"') 

Vous pouvez aussi le faire en une ligne:

text.gsub!("\x93", '"').gsub!("\x94", '"') 
# or 
text.gsub!(/(\x93|\x94)/, '"') 

Etes-vous sûr de l'encodage de la chaîne est correcte?

+0

Lorsque j'essaie ceci ou l'autre réponse donnée, je reçois Encoding :: CompatibilityError: correspondance de regexp d'encodage incompatible (regexp ASCII-8BIT avec la chaîne UTF-8) –

Questions connexes