Zeichensatz Kodierung MySQL

torax13

Erfahrenes Mitglied
Hallo,

ich habe eine MySQL Datenbank (5er Version, auf Debian) mit UTF-8 angelegt.
Soweit alles gut. Zugreifen tu ich darauf per Java (Hibernate) und hatte als Parameter für die Connection leider UTF-8 (und nicht utf8) angegeben. Nun hab ich das leider erst gestern bemerkt (bemerkt schon eher, aber nicht gewußt woran das nicht richtig funktionierte).

Mit den klasse Artikel [1] sind mir nun denk ich die Grundlagen soweit klar.

[19 http://blog.koehntopp.de/archives/1424-MySQL-Zeichensatz-Grundlagen.html

Mit der richtigen Einstellung kommen NEUE Strings auch richtig kodiert in die Datenbank. Schön. Aber, hab ich eine Chance die alten Texte zu fixen? Ich hab schon versucht per
SQL:
select convert( textspalte using latin1 ) from table;
rauszufinden in welcher Kodierung die alten denn gespeichert sind (und so ziemlich alle charsets aus SHOW CHARSET ausprobiert).

Hat jemand eine Idee? Zeichensätze bringen mich immer wieder durcheinder :(

Vielen Dank schon im vorraus.

Torax
 
Hi
also wenn du die Tabelle umstellst (also z.B. von utf8 zu latin1) werden die darin gespeicherten Strings automatisch in latin1 konvertiert. Das Problem ist, dass unter Umständen (weiss es leider selbst nicht genau) die Sonderzeichen und Umlaute verlohren gehen. Dagegen kannst du eigentlich nicht viel machen.
Bei uns hatten wir das auch mal, aber da der Pool der Wörter die wir verwenden eigentlich begrenzt ist haben wir einfach eine Liste erstellt (ala: Huser->Häuser, etc) und diese über alle Stringfelder laufen lassen. Aber wahrscheindlich wird das bei dir nicht klappen, he?

Gruss und viel Glück
 
Nein, das wird leider nicht klappen.

Die Tabellen sind ja bereits auf UTF-8 gesetzt (die Datenbank nicht, und dadurch, so lernte ich jetzt, wird ohne Angabe eines Paramters das Encoding für neue Connections auf den default gesetzt)

Ich fürchte wohl, das ich mit den vermanschten Daten leben muss.


Vielen Dank trotzdem für Deine Antwort.

Torax
 
Zurück