Umlaute wieder zurück bekommen

Umlaute wieder zurück bekommen

am 01.06.2007 13:18:51 von 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.).

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

Re: Umlaute wieder zurück bekommen

am 01.06.2007 13:51:22 von Christian Kirsch

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.

Re: Umlaute wieder zurück bekommen

am 01.06.2007 17:36:17 von Lars Kampmann

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

Re: Umlaute wieder zurück bekommen

am 01.06.2007 17:55:46 von Christian Kirsch

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

Re: Umlaute wieder zurück bekommen

am 01.06.2007 19:36:36 von Claus Reibenstein

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@xl.homelinux.org> an. Dort wurde ein
ziemlich ähnliches Problem bereits gelöst.

Gruß. Claus