2009-06-26 4 views
2

Ich versuche, eine Textdatei zu analysieren, die die seltsamen Zitate wie „und“ in „normale Anführungszeichen wie“in Ruby, versucht, diese seltsamen Zitate in „normalen“ umwandeln zitiert

Ich habe versucht, dies hat:

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

aber wenn es fertig ist, sie sind immer noch da und zeigen sich als

\x93 and \x94 

so habe ich versucht, fügte hinzu, dass auch ohne Glück:

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

Das Problem ist, wenn ich versuche, diese seltsamen Zitate auf einer Webseite zu zeigen, macht es so seltsam Diamanten mit einem Fragezeichen-Symbol:

Antwort

1

Es scheint zu funktionieren:

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\"" 

Sie müssen einen Hex-Editor verwenden, um alle beteiligten Zeichencodes herauszufinden.

0

Re: die zweite Frage, warum die seltsamen Zitate zeigen auf einer Webseite als Symbol:

Ihr Problem ist, dass Ihre Web-Seite ist nicht in UTF-8-Modus. Um es dorthin zu gelangen, siehe http://www.w3.org/International/O-HTTP-charset

Wenn Sie Ihren Web-Server ändern können, fügen Sie eine Meta-Linie im Kopfbereich Ihrer Webseiten: http://www.utf-8.com/

Larry

0

Ihr erstes gsubs sollte funktionieren . Der Grund dafür, dass die zweite Gruppe von gsubs nicht funktioniert, ist, dass Sie einfache Anführungszeichen und doppelten Backslash verwenden. Versuchen Sie, die umgekehrt:

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

Sie auch diese in einer Zeile tun:

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

Sind Sie sicher, dass die Codierung der Zeichenfolge richtig ist?

+0

Wenn ich diese oder die andere gegebene Antwort versuche, bekomme ich Encoding :: CompatibilityError: inkompatible Codierung regexp Übereinstimmung (ASCII-8BIT regexp mit UTF-8-String) –