Umlaute wieder zurück bekommen

Hallo,

mir passiert es immer wieder durch Ex- und Import von Tabellen, dass
"plötzlich" die Umlaute nicht richtig kodiert sind (z.B. Ã1/4 anstatt ü
oder ö anstatt ö u.s.w.).

Jetzt habe ich hier gelesen, dass man das Vermeiden kann durch "SET
NAMES 'utf8';" am Beginn der SQL-Dumpdatei, gut.

Ist es möglich, die falsche Codierung wieder umzuwandlen, ohne in allen
Feldern in einer Schleife durch Teilzeichenkettenaustausch?

Danke für ein Tipp, Gruß Lars
Lars Kampmann [ Fr, 01 Juni 2007 13:18 ] [ ID #1727825 ]

Re: Umlaute wieder zurück bekommen

Am 01.06.2007 13:18 schrieb Lars Kampmann:
> Hallo,
>
> mir passiert es immer wieder durch Ex- und Import von Tabellen, dass
> "plötzlich" die Umlaute nicht richtig kodiert sind (z.B. Ã1/4 anstatt ü
> oder ö anstatt ö u.s.w.).
>

Mit anderen Worten: Du hast UTF8-kodierte Umlaute, irgendein Teil
Deiner Umgebung stellt die aber mit Latin-1 dar.

> Jetzt habe ich hier gelesen, dass man das Vermeiden kann durch "SET
> NAMES 'utf8';" am Beginn der SQL-Dumpdatei, gut.
>

Warum sollte das so sein? Du *hast* doch anscheinend schon UTF-8 in
Deinen Daten. Das wird nicht automagisch zu Latin-1 oder sonst was,
wenn man irgendwo mal UTF-8 hinschreibt.

> Ist es möglich, die falsche Codierung wieder umzuwandlen, ohne in allen
> Feldern in einer Schleife durch Teilzeichenkettenaustausch?

Abgesehen davon, dass wir genau diese Frage gerade erst hatten: Mit
dem, was Du hier an "Informationen" bietest, kann niemand was
anfangen. Anders gesagt: Es ist problemlos möglich, Tabellenex- und
-import so zu gestalten, dass Umlaute exakt so aussehen, wie man das
will. Dazu muss man aber wissen
- was man will (UTF-8? Latin-1? Klingonisch?)
- was man tut (mysqldump? PHPMyAdmin)
- welche Werkzeuge man für was benutzt (PHPMyAdmin? mysql? Selbstbau-SW?)

Mehr sinnvoller Input ist die Voraussetzung für sinnvollen Output.
Christian Kirsch [ Fr, 01 Juni 2007 13:51 ] [ ID #1727827 ]

Re: Umlaute wieder zurück bekommen

Christian Kirsch schrieb:
> - was man will (UTF-8? Latin-1? Klingonisch?)
äöüÄÖÜ

# Server Version: 5.0.41-community-log
# Protokoll-Version: 10
# Server: Localhost via UNIX socket
# MySQL-Zeichensatz: UTF-8 Unicode (utf8)

Die Kollation ist der Tabelle/Felder ist latin1_bin. Das war schon immer
so und hat auch funktioniert. Mir ist noch nicht klar, wodurch es
passiert. Jedenfalls stehen jetzt die nicht gewünschten Zeichen da, die
ich (sozusagen im Nachhinein) wieder ändern, d.h., in der Tabelle soll
öäüÖÄÜ stehen.

> - was man tut (mysqldump? PHPMyAdmin)
PHPMyAdmin, lokal auch Navicat (Windows XP Prof)
> - welche Werkzeuge man für was benutzt (PHPMyAdmin? mysql? Selbstbau-SW?)
PHPMyAdmin, lokal auch Navicat (Windows XP Prof)

Gruß Lars
Lars Kampmann [ Fr, 01 Juni 2007 17:36 ] [ ID #1727830 ]

Re: Umlaute wieder zurück bekommen

Lars Kampmann schrieb:
> Christian Kirsch schrieb:
>> - was man will (UTF-8? Latin-1? Klingonisch?)
> äöüÄÖÜ
>
> # Server Version: 5.0.41-community-log
> # Protokoll-Version: 10
> # Server: Localhost via UNIX socket
> # MySQL-Zeichensatz: UTF-8 Unicode (utf8)
>

Warum? Wenn Du nur Latin-1 willst, dann stell doch den Server auch so ein.

> Die Kollation ist der Tabelle/Felder ist latin1_bin.

Die Kollation ist hier eigentlich sekundär - es geht doch in erster
Linie um den Zeichensatz (charset).

> Das war schon immer
> so und hat auch funktioniert. Mir ist noch nicht klar, wodurch es
> passiert. Jedenfalls stehen jetzt die nicht gewünschten Zeichen da, die
> ich (sozusagen im Nachhinein) wieder ändern, d.h., in der Tabelle soll
> öäüÖÄÜ stehen.

Nichts für ungut, aber äöü sind immer äöü - ob nun in Latin-1 oder in
Unicode. Die hinzuschreiben, sagt erstmal gar nix.

>
>> - was man tut (mysqldump? PHPMyAdmin)
> PHPMyAdmin, lokal auch Navicat (Windows XP Prof)
>> - welche Werkzeuge man für was benutzt (PHPMyAdmin? mysql? Selbstbau-SW?)
> PHPMyAdmin, lokal auch Navicat (Windows XP Prof)

Dann würde ich vorschlagen, die Dinge zu benutzen, die hier ontopic sind
(was weder für PHPMyAdmin noch für Navicat gilt). In erster Linie also
mal mysqldump. Dem kannst Du z.B. einen Charset verpassen. Was das
dumpt, das kann mysql (das Kommandozeilentool) auch wieder einelsen).

Zu PHPMyAdmin empfehle ich Dir Google, vorzugsweise in Verbindung mit
dem Wort "Mantra".
Christian Kirsch [ Fr, 01 Juni 2007 17:55 ] [ ID #1727831 ]

Re: Umlaute wieder zurück bekommen

Lars Kampmann schrieb:

> Ist es möglich, die falsche Codierung wieder umzuwandlen, ohne in allen
> Feldern in einer Schleife durch Teilzeichenkettenaustausch?

Schau Dir mal <0s8ri4-usj.ln1 [at] xl.homelinux.org> an. Dort wurde ein
ziemlich ähnliches Problem bereits gelöst.

Gruß. Claus
Claus Reibenstein [ Fr, 01 Juni 2007 19:36 ] [ ID #1727833 ]
Datenbanken » de.comp.datenbanken.mysql » Umlaute wieder zurück bekommen

Vorheriges Thema: Schlanke Ungleich-Abfrage zwischen (Sub-)Strings in zwei Tabellen?
Nächstes Thema: Unterschiedliches Verhalten von CREATE TABLE