Umlaute "richtig" speichern

Umlaute "richtig" speichern

am 03.06.2007 20:07:29 von smac

Ich hätte da eine allgemeine Frage an euch.

Wie speichere ich deutsche Umlaute "richtig".

Soll man die Umlaute in die Datenbank schreiben oder deren HTML-Codes?

Die Website dazu hat charset=3Diso-8859-1 als Zeichensatz angegeben, die
Datenbank verwwendet UTF-8 Uniocde als Zeichensatz.

Wie gehe ich das Thema am Besten an?

Vielen Dank für Eure Hilfe.

Re: Umlaute "richtig" speichern

am 04.06.2007 01:29:18 von Klaus Hertle

On Sun, 03 Jun 2007 11:07:29 -0700, smac wrote:

> Wie speichere ich deutsche Umlaute "richtig".
>
> Soll man die Umlaute in die Datenbank schreiben oder deren HTML-Codes?
>
> Die Website dazu hat charset=iso-8859-1 als Zeichensatz angegeben, die
> Datenbank verwwendet UTF-8 Uniocde als Zeichensatz.
>
> Wie gehe ich das Thema am Besten an?

Verwende möglichst durchgehend utf-8!
Wenn Deine Datenbank als Zeichensatz utf-8 speichert, dann speichere auch
utf-8-kodierte Zeichen in der Datenbank.

Und wie wird aus der Datenbank eine Website? Zauberei?

Warum verwendesst Du unterschiedliche Zeichensätze? Weil umkodieren Spaß
macht?

Wenn es um "deutsch" geht, dann sollte das sowieso besser iso-8859-15 sein.

Klaus

Re: Umlaute "richtig" speichern

am 04.06.2007 09:06:25 von Christian Kirsch

Klaus Hertle schrieb:
> On Sun, 03 Jun 2007 11:07:29 -0700, smac wrote:

Wer? Hier sind Realnamen gern gesehen - ein Gebot der Höflichkeit.

>
>> Wie speichere ich deutsche Umlaute "richtig".
>>
>> Soll man die Umlaute in die Datenbank schreiben oder deren HTML-Codes?
>>

Natürlich sollst Du keine HTML-Codes in die DB schreiben. Wer heißt
schon Müller?

>> Die Website dazu hat charset=iso-8859-1 als Zeichensatz angegeben, die
>> Datenbank verwwendet UTF-8 Uniocde als Zeichensatz.

Meine Websites und Datenbanken geben genau das "an", was ich ihnen sage.
Und neben Datenbanken können in MySQL auch Tabellen und Spalten vom
Default abweichende Kodierungen verwenden.

Du möchtest sicherlich erstmal das entsprechende Kapitel in der
Dokumentation (Charsets & Collations) bei dev.mysql.com lesen.

>>
>> Wie gehe ich das Thema am Besten an?
>
> Verwende möglichst durchgehend utf-8!

Warum sollte man das tun, wenn man ausschließlich deutsche bzw.
westeuropäische Texte verarbeitet?

> Wenn Deine Datenbank als Zeichensatz utf-8 speichert, dann speichere auch
> utf-8-kodierte Zeichen in der Datenbank.

Warum?
>
> Wenn es um "deutsch" geht, dann sollte das sowieso besser iso-8859-15 sein.

Sach ich doch

Re: Umlaute "richtig" speichern

am 04.06.2007 10:53:23 von Axel Schwenke

Klaus Hertle wrote:
> On Sun, 03 Jun 2007 11:07:29 -0700, smac wrote:
>
>> Wie speichere ich deutsche Umlaute "richtig".
>> Soll man die Umlaute in die Datenbank schreiben oder deren HTML-Codes?

Natürlich die Zeichen. Dieses grauslige HTML-Encoding ist ein häßlicher
Hack aus der Zeit, als Browser weder latin1 noch gar Unicode konnten.
Mittlerweile ist die Sache viel einfacher: wenn du sicher weißt, daß
dein Zeichenvorrat in einen 8-Bit Zeichensatz paßt, dann verwende den.
Ansonsten Unicode (mit utf8 als Transport-Encoding).

Mal abgesehen von asiatischen Daten ist das auch die Vorgehensweise für
das Auswählen eines CHARACTER SET für eine Spalte einer MySQL-Tabelle.

>> Die Website dazu hat charset=iso-8859-1 als Zeichensatz angegeben, die
>> Datenbank verwwendet UTF-8 Uniocde als Zeichensatz.

Wenn dein Webserver die Seiten als latin1 ausliefert, wäre es Blödsinn,
die Daten in der Datenbank in utf8 abzulegen. Schließlich muß irgendwer
die Daten ja umwandeln. Und utf8 kann Zeichen enthalten, die sich nicht
in latin1 darstellen lassen!


> Verwende möglichst durchgehend utf-8!

Nein.

Dein Vorschlag ist wie "Wenn du ein neues Auto kaufen willst, dann nimm
einen 5-Tonner. Da paßt mehr rein". Der Vorschlag ist nicht *immer*
falsch (z.B. wenn man ihn einem Spediteur gibt). Aber in vielen Fällen
ist ein 5-Tonner sinnlos überdimensioniert.

Utf8 in MySQL ist *teuer*. U.a. weil einige Datenstrukturen für den
worst case mit 3 Bytes pro Zeichen dimensioniert werden. Und da ist es
noch ein Glück, daß MySQL nur 16-Bit Unicode unterstützt. Sonst wären
es 5 Bytes pro Zeichen.

> Wenn Deine Datenbank als Zeichensatz utf-8 speichert, dann speichere auch
> utf-8-kodierte Zeichen in der Datenbank.

Das verwendete Encoding kann man pro Tabellenspalte festlegen. Eine
Datenbank selber hat diese Eigenschaft gar nicht.


XL

Re: Umlaute "richtig" speichern

am 04.06.2007 20:11:15 von smac

Vielen Dank für eure Antworten.

Zusammenfassend verstehe ich euch so, dass ich die Datenbank bzw.
genauer gesagt die Tabellen mit einer Zeichencodierung von "latin1"
einstellten soll und Umlaute usw. direkt ohen Codierung rein schreiben
soll.

Warum sollte ich für die Webseiten "iso-8859-15" verwenden? iso-8859-1
ist doch auch Westeuropäisch?

Noch eine Frage, ich habe in meinen Tabellen nun die Umlaute in HTML-
Codes stehen. kann ich die Zeichencodierung nun einfach auf Latin1
umstellen, oder muss ich dabei mit Problemen rechnen?

Vielen Dank

Marion

Re: Umlaute "richtig" speichern

am 04.06.2007 20:20:59 von Gregor Kofler

Marion Richter meinte:
> Vielen Dank für eure Antworten.
>
> Zusammenfassend verstehe ich euch so, dass ich die Datenbank bzw.
> genauer gesagt die Tabellen mit einer Zeichencodierung von "latin1"
> einstellten soll und Umlaute usw. direkt ohen Codierung rein schreiben
> soll.
>
> Warum sollte ich für die Webseiten "iso-8859-15" verwenden? iso-8859-1
> ist doch auch Westeuropäisch?

Aber ohne Eurozeichen. Zudem wird lt. Wikipedia auch Französisch und
Finnisch komplett abgedeckt.

> Noch eine Frage, ich habe in meinen Tabellen nun die Umlaute in HTML-
> Codes stehen. kann ich die Zeichencodierung nun einfach auf Latin1
> umstellen, oder muss ich dabei mit Problemen rechnen?

ä ist auch in ISO-8859 ä Sind ja schließlich nur Zeichen aus
dem unteren 7-Bit-Bereich drin. Oder wie ist die Frage zu verstehen?

Gregor


--
http://www.gregorkofler.at ::: Landschafts- und Reisefotografie
http://www.licht-blick.at ::: Forum für Multivisionsvorträge
http://www.image2d.com ::: Bildagentur für den alpinen Raum

Re: Umlaute "richtig" speichern

am 04.06.2007 22:45:25 von Christian Kirsch

Marion Richter schrieb:
> Vielen Dank für eure Antworten.
>
> Zusammenfassend verstehe ich euch so, dass ich die Datenbank bzw.
> genauer gesagt die Tabellen mit einer Zeichencodierung von "latin1"
> einstellten soll und Umlaute usw. direkt ohen Codierung rein schreiben
> soll.

Umlaute ohne Kodierung ist eine contradictio in adjecto. Du kannst für
Umlaute latin-1 benutzen oder latin-15 oder utf-8 - aber Du kannst nicht
keine Kodierung verwenden.

>
> Warum sollte ich für die Webseiten "iso-8859-15" verwenden? iso-8859-1
> ist doch auch Westeuropäisch?
>

Hat aber kein Euro-Zeichen. Das erfreut sich ja seit einiger Zeit einer
gewissen Beliebtheit.

> Noch eine Frage, ich habe in meinen Tabellen nun die Umlaute in HTML-
> Codes stehen. kann ich die Zeichencodierung nun einfach auf Latin1

Wieso? Davon war bisher doch nie die Rede. Was sollen den
Ümläute in einer Datenbanktabelle?

> umstellen, oder muss ich dabei mit Problemen rechnen?

Der Datenbank ist es eigentlich herzlich egal. Jedem real existierenden
Browser m.W. auch, solange Du ihm den richtigen Content-Header mitschickst.

Re: Umlaute "richtig" speichern

am 05.06.2007 10:56:46 von Axel Schwenke

Marion Richter wrote:
>
> Noch eine Frage, ich habe in meinen Tabellen nun die Umlaute in HTML-
> Codes stehen. kann ich die Zeichencodierung nun einfach auf Latin1
> umstellen, oder muss ich dabei mit Problemen rechnen?

Das kannst du ohne Probleme machen. Das HTML-Encoding-Schema ist ja so
ausgelegt, daß es mit dem Zeichenvorrat von ASCII auskommt und ASCII
ist ja in latin1 enthalten (als die ersten 128 Zeichen von latin1).

Allerdings wäre es u.U. klug, demnächst mal die HTML-Entities aus der
Datenbank rauszuwerfen (durch die "richtigen" Zeichen zu ersetzen).
Das ist so lange egal, wie du die Daten aus der Datenbank *nur* dazu
verwendest um sie in HTML-Seiten einzubauen die ein Browser sieht.
Aber schon, wenn du in der Datenbank suchen willst, ist das HTML-Zeug
schlecht. Der Browser mag 'ü' und 'ü' noch gleich darstellen -
die Datenbank hingegen findet 'fünf' nicht, wenn du nach 'fünf'
suchst. Und das kann dir schon aus einer Webanwendung heraus passieren:
Wenn ein Nutzer in ein Formular 'fünf' schreibt, kommt das auch so an.


XL

Re: Umlaute "richtig" speichern

am 05.06.2007 11:06:46 von smac

Vielen Dankf für eure Antworten.

Das mit dem Euro-Zeichen habe ich nicht gewußt.

Die Idee mit dem Ändern der HTML-Tags in "wirkliche Zeichen" habe ich
vor. Vor allem weil es eben genau das Problem gibt, das Suchergebnisse
nicht stimmen bzw. falsch sortiert werden. Ich nehme mal an dafür gibt
es keine "Funktion" sondern ich muss das mit Suchen und Ersetzen
umsetzen?

Re: Umlaute "richtig" speichern

am 06.06.2007 16:09:34 von Markus Mann

Marion Richter wrote:
>
> Die Idee mit dem Ändern der HTML-Tags in "wirkliche Zeichen" habe ich
> vor. Vor allem weil es eben genau das Problem gibt, das Suchergebnisse
> nicht stimmen bzw. falsch sortiert werden. Ich nehme mal an dafür gibt
> es keine "Funktion" sondern ich muss das mit Suchen und Ersetzen
> umsetzen?

Was heißt eigentlich "Ersetzen" auf englisch?


Vorher ein Backup der Daten machen!

Ciao.
--
Markus Mann
];-)