2009-07-13 14 views
0

ich meine Rails-Anwendung kehrt anstelle von doppelten Anführungszeichen und bestimmte Striche bemerkt, gibt es eine Markierung Fragemysql Codierung Problem mit Sonderzeichen

character--

Gibt es eine Möglichkeit, die Tabelle zu aktualisieren und ersetzen Sie sie durch Original Figuren?

Danke!

Amie

+0

char encoding? UTF-8? –

+0

Ja .. http Inhalt Header gibt UTF-8. Ich frage mich, ob es einen Weg gibt, es zu übersteuern. Dieser Artikel (http://www.validome.org/lang/en/errors/HTML-CHARSET) sagt http-Header hat eine höhere Priorität. – Grnbeagle

Antwort

0
update [table_name] set [field_name] = 
replace([field_name],'[string_to_find]','[string_to_replace]'); 

sollte es tun. Führen Sie immer zuerst eine Testdatenbank aus, bis Sie wissen, dass nichts kaputt gehen wird.

Verwenden Sie diese Erklärung auf eigene Gefahr.

+0

Danke für den Vorschlag. Ein Problem beim Suchen und Ersetzen ist, dass ich nicht sicher bin, welche Zeichenfolge gefunden werden muss. Von der MySQL-Konsole erscheinen sie alle als "?" (einschließlich dieser Sonderzeichen und legitimen Fragezeichen) Ich hatte gehofft, dass es eine Kodierungseinstellung gibt, die ich optimieren kann. Jeder Vorschlag wird geschätzt. – Grnbeagle

1

Diejenigen, wird "typografische Anführungszeichen" und Ausführungs oder en-Striche (“ ” ‘ ’ — –). Microsoft-Apps neigen dazu, diese anstelle ihrer vollkommen guten ASCII-Entsprechungen, dem Anführungszeichen, Apostroph und Bindestrich zu verwenden. Sie speichern auch den Text als Windows-1252, eine Microsoft-Erweiterung der ISO-8859-1-Zeichenkodierung, die Zuordnungen für diese ausgefallenen Zeichen anstelle der (zugegebenermaßen nutzlosen) Steuerzeichen im Bereich 128..159 enthält.

So ist das unmittelbare Problem, dass Sie den Text als ISO-8859-1 oder UTF-8 oder sogar ASCII dekodieren (oder lassen Sie das System standardmäßig auf eine dieser Kodierungen), wenn Sie Windows-1252 verwenden sollten . Für mehr Hintergrund auf dem echten Problem, google "Demoronizer" oder "ASCII Dammit".

+0

Danke für Infos. Wie Sie vorgeschlagen, habe ich mehr Informationen über Windows-1252-Codierung nachgeschlagen. Es scheint, dass die HTTP-Antwort-Header (die UTF-8 angegeben ist) hat Vorrang vor Meta-Zeichensatz, so dass ich Ad-hoc-Codierung nicht ändern konnte. Dies ist nützliche Informationen zum Thema: http://www.cs.tut.fi/~jkorpela/www/windows-chars.html – Grnbeagle

1

Those Fragezeichen geben einen ungültigen Byte für die Kodierung der Umwelt das Ergebnis in angezeigt wird.

In diesen Tagen meisten Umgebungen wird utf-8 sein.

Wenn die mysql-Konsole App ausgeführt wird, führen Sie den folgenden Befehl, wenn Sie zuerst schließen Sie den MySQL-Server zu sagen, alle Ergebnisse für die aktuelle Verbindung in utf-8 zurück:

SET NAMES utf8; 

In Schienen, Sie können diesen Befehl ausführen, wenn ActiveRecord eine Datenbankverbindung öffnet, indem Sie der Datei "database.yml" "encoding: utf8" hinzufügen. Sie sollten auch sicherstellen, dass Ihr Webserver (apahce/nginx/etc) den HTTP-Header utf-8 sendet und dass Ihre HTML-Dateien ein Content-Type-Meta-Tag haben.

Es ist möglich, dass Sie beschädigte Bytes in Ihrer Datenbank gespeichert haben und dies wird nicht helfen. Wenn das der Fall ist, sind Sie in einer Welt des Spaßes, der versucht, es zu säubern :)

+0

Hatte das gleiche Problem ...Hinzufügen der Codierung: utf8 zu database.yml hat die Zeichen display richtig angezeigt. Danke, das hatte ich vergessen :) – foz