ISO-UTF8 in verkorkster Datenbank korrigieren

Gast #4520089
Lesenswert?

Hallo,
immer wieder habe ich Probleme dass bei einem Webshop oder Forum nach 
einer Umstellung oder Migration die Daten falsch in der Datenbank sind.
Also die Umlaute meine ich.

Gibt es da kein Tool, das man einfach über eine Datenbank laufen lässt 
und es korrigiert dann alle Umlaute richtig?

Also aus einem ä -> ä

matthias
Gast #4520097
Lesenswert?

Warum stellst du den Zeichensatz nicht vorher mal richtig ein?

Ich meine, wenn dir das offenbar öfter passiert, sollte doch irgendwann 
mal das Lämpchen im Kopf aufleuchten, bevor du deinen Import/deine 
Migration startest.
#4520266
Lesenswert?

Backup zurückspielen, und die ganze Migration nochmal mit richtigen 
Codepagesetings machen.

Allerdings: ä ist bei normalen ASCII Codepages 0xC3A4:

ftp://ftp.software.ibm.com/software/globalization/gcoc/attachments/CP008 
19.pdf

In UTF8 ist 0xC3A4 aber auch ein ganz normales ä.
Offensichtlich ist also wohl nur Dein Anzeigeprogramm Kacke (falsche 
Codepageeinstellung), und nicht die Daten selbst.
Gast #4520464
Lesenswert?

Was ist überhaupt richtig? Zu Zeiten des Internethypes hatten wir noch 
die diversen ISO und Microsoft Codes. Heutzutage machen wir alles in 
Unicode.

Wenn du nun ein 10 Jahre altes System umstellst, musst du dich 
entscheiden, alte Codes beibehalten oder auf Unicode umstellen?
#4520700
Lesenswert?

Die Sache hinterher reparieren ist nie gut, Besser wäre das von vorn 
herein richtig zu machen.
Geb uns doch ein Paar Stichpunkte, dann können wir dir ggf. helfen das 
beim Nächsten man besser zu machen.

So z.b.
Was für eine Datenbank verwendest du, in welcher Sprache ist die 
Software die du benutzt, Hast du die Möglichkeit die 
Datenbank-Verbindungseinstellungen zu der Software anzupassen?
Und was für software ist das überhaupt? :)
Gast #4520714
Lesenswert?

Ich wollte wissen, ob es ein Tool gibt (zum Beispiel PHP), das man über 
eine bestehende Datenbank (oft mySQL) laufen lassen kann, und das dann 
Fehler in Umlauten automatisch erkennt und diese automatisch korrigiert. 
Bei Zweifel ggf. mit Nachfrage.

Deshalb stelle ich diese Frage hier im Forum, weil ich gehofft habe, 
jemand kennt so eines.

Da ich bisher aber keine positive Antwort bekommen habe, und das Forum 
ja recht gut besucht ist, gehe ich mal davon aus, es gibt keines. Also 
keines, das weit bekannt ist.
Gast #4520741
Lesenswert?

>>Da ich bisher aber keine positive Antwort bekommen habe,
>iconv wurde schon genannt.
Ich kenn iconv.
Mit positiver Antwort meinte ich eine Antwort auf die Frage, ob es ein 
Tool gibt, das eine Datenbank online prüft und korrigiert.
#4520761
Lesenswert?

>Mit positiver Antwort meinte ich eine Antwort auf die Frage, ob es ein
>Tool gibt, das eine Datenbank online prüft und korrigiert.

Sowas kann es nicht geben, denn woher weis denn das Tool, was richtig 
und falsch sein soll. Da müsste man das Tool ja erstmal "anlernen" durch 
entsprechende Konfiguration.

Aber wie ich oben schon schrieb, ist zumindest das beanstandete ä 
offensichtlich richtig in der db drin, denn 0xC3A4 ergibt in utf8 ein ä.
Gast #4520827
Lesenswert?

>ist zumindest das beanstandete ä offensichtlich richtig

Würde ich erstmal auch so sehen. In Summe bekommt man am wenigsten 
Probleme, wenn man alles in Unicode macht.

Aber hier scheint ja das Problem zu sein: Neue Datenbank wird in UTF8 
angelegt, Datenimport konvertiert in UTF8, aber die Forensoftware kommt 
damit nicht zurecht.

Was tun - Forensoftware umkonfigurieren oder Datenbank in ISO-Code 
anlegen? Es gibt kein KI-Tool, was diese Frage entscheiden kann.
Gast #4520864
Lesenswert?

matthias_saihttam schrieb:
> Mit positiver Antwort meinte ich eine Antwort auf die Frage, ob es ein
> Tool gibt, das eine Datenbank online prüft und korrigiert.

Ziemlich sicher nicht. Ich habe so eine Software mal geschrieben für 
Ligaturen (die ersetzt Zeichenfolgen oder fügt Zeichen ein, z.B. für 
Schulschriften, und wird durch entsprechende Definitionsdateien 
konfiguriert), aber die bearbeitet Text-Dateien, wie vermutlich alle 
solchen Tools. Es ist sinnlos sowas für alle in Frage kommenden 
Datenbanken schreiben zu wollen.

Man muss ja nicht nur die DB-Software kennen, sondern auch noch den 
Aufbau der speziellen Datenbank, damit man nicht versehentlich falsche 
Felder korrigiert. Das gilt wohl auch für PHP (oder irgendeine andere 
Sprache).

Georg
#4521035
Lesenswert?

Exportier' es doch einfach als Text und lass iconv laufen. Hab ich schon 
gemacht, funktioniert prima und dauert fünf Sekunden. Aber gut, wenn du 
das nicht willst ...

Mit "prüfen" ist da nix, du musst manuell Quell- und Zielkodierung 
angeben.

Kaputt ist m.E. bei dem was du da zeigst auch nichts. Das sind nur 
(korrekte) Daten, die im falschen Encoding interpretiert werden.
#4521073
Lesenswert?

Das Problem mit UTF8 vs ISO kann aber recht kompliziert werden, 
schliesslich kann man neben der Speicherart der Tabelle an sich auch den 
Modus der Datenbankverbindung auch (falsch) setzen. Ob es richtig in der 
DB steht, sollte man mit einem über alle Zweifel erhabenen Tool prüfen 
(z.B. phpmyadmin by MySQL). Daneben gibts dann noch Oracle, dass für 
UTF8 eine ganz eigene Codierung will.

Und wenn Perl mitspielt, hat man eh viel Arbeit vor sich... Perl ist 
toll, aber die Automatismen für UTF8/ISO sind eine einzige Katastrophe. 
Und zwar dann, wenn die Strings aus verschiedenen Quellen kommen (DB, 
Ausgaben von Programmen, aus XML-Daten via XMLin, aus CGI-Parametern, 
etc.). Das kann soweit gehen, dass mit dem DB-Handling alles in Ordnung 
ist, aber die Ausgabe eines echten UTF8-Zeichens via print() auf eine 
UTF8-Konsole nur Schrott ergibt. Oder andersrum mit print-Debugging 
alles gut ist, aber in der DB Müll landet, obwohl da auch alles auf UTF8 
steht. Der Knaller sind dann via print identisch aussehende Strings mit 
korrekten Umlauten, die in der DB einmal richtig und einmal falsch 
landen. Da helfen dann nur noch Data::Dumper und Data::Hexdumper...
#4521759
Lesenswert?

@ Georg A. (georga)

>> UTF8 ist UTF8

>He, das ist Oracle, die sind bei MS ihr eigener Standard, ist ja auch
>bei SQL so... Google mal nach AL32UTF8 vs. UTF8.

http://www.oracle.com/technetwork/products/globalization/twp-appdev-unicode-10gr2-129234.pdf

Auch wenn es AL32UTF8 heist, ist nur der Name eine Erfindung von Oracle. 
Der Inhalt dagegen entspricht ganz einfach dem Unicodestandard einer 
bestiommten Version.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren