Zeichenkodierungsverwirrung

Zeichenkodierungsverwirrung

am 21.05.2007 14:15:03 von Michael Koch

Hallo zusammen,

wir haben hier einen MySQL Server stehen.
Die Version ist 5.0.18-nt.
Die Datenbanken darauf liefen jetzt schon 2 Jahre ohne Probleme. Nur war
ich 2 Wochen in Urlaub und seit Freitag werden Umlaute nicht mehr korrekt
angezeigt (ohne daß etwas geändert wurde). Wenn ich mit php auf die Daten
zugreifen will ersetzt er mir zum Beispiel "Bauschäden und ihre Ursachen"
durch "Bausch?n und ihre Ursachen".
Mir ist gerade eben aufgefallen, daß nicht alle Umlaute falsch abgelegt
sind. Es ist erst bei denen falsch, die heute eingetragen wurden. Obwohl
andererseits wieder einige EIntraäge die schon länger bestehen, nun flasch
angezeigt werden. Kann mir vielleicht jemand einen Tipp geben, wie ich
anfangen kann nach dem Fehler zu suchen?
Ach ja: Als Character Set stehen in den my.ini
[mysql]

default-character-set=utf8

[mysqld]

default-character-set=utf8

Danke

Michael

Re: Zeichenkodierungsverwirrung

am 21.05.2007 14:37:58 von Christian Kirsch

Am 21.05.2007 14:15 schrieb Michael Koch:
> Hallo zusammen,
>
> wir haben hier einen MySQL Server stehen.
> Die Version ist 5.0.18-nt.
> Die Datenbanken darauf liefen jetzt schon 2 Jahre ohne Probleme. Nur war
> ich 2 Wochen in Urlaub und seit Freitag werden Umlaute nicht mehr korrekt
> angezeigt (ohne daß etwas geändert wurde). Wenn ich mit php auf die Daten
> zugreifen will ersetzt er mir zum Beispiel "Bauschäden und ihre Ursachen"
> durch "Bausch?n und ihre Ursachen".

Bedeutet das, dass Du mit mysql (Kommandozeilentool) die richtigen
Werte siehst?

> Mir ist gerade eben aufgefallen, daß nicht alle Umlaute falsch abgelegt
> sind. Es ist erst bei denen falsch, die heute eingetragen wurden. Obwohl
> andererseits wieder einige EIntraäge die schon länger bestehen, nun flasch
> angezeigt werden. Kann mir vielleicht jemand einen Tipp geben, wie ich
> anfangen kann nach dem Fehler zu suchen?
> Ach ja: Als Character Set stehen in den my.ini
> [mysql]
>
> default-character-set=utf8
>
> [mysqld]
>
> default-character-set=utf8
>

Was ist mit dem connection-character-set? In welcher Kodierung wirft
Dein Webserver die Daten aus? Wie sind die anderen
Character-Set-Einstellungen (-> Handbuch!).

Re: Zeichenkodierungsverwirrung

am 21.05.2007 15:05:33 von Michael Koch

Hallo,

Michael Koch wrote:



mir ist eben aufgefallen, daß das Problem nur auftritt, wenn ich über php
auf die Daten zugreife. Über myodbc (Word und C# Anwendungen) ist das
Encoding richtig. Ich denke ich frag mal unseren Webserver admin ob der was
am Freitag geändert hat. Komischerweise werden die Umlaute aber mit
phpMyAdmin richtig eingetragen. Sehr seltsam das. Einer eine Idee?

Danke

Michael

Re: Zeichenkodierungsverwirrung

am 21.05.2007 15:19:18 von Christian Kirsch

Am 21.05.2007 15:05 schrieb Michael Koch:
> Hallo,
>
> Michael Koch wrote:
>
>
>
> mir ist eben aufgefallen, daß das Problem nur auftritt, wenn ich über php
> auf die Daten zugreife. Über myodbc (Word und C# Anwendungen) ist das
> Encoding richtig. Ich denke ich frag mal unseren Webserver admin ob der was
> am Freitag geändert hat. Komischerweise werden die Umlaute aber mit
> phpMyAdmin richtig eingetragen. Sehr seltsam das. Einer eine Idee?
>

Disclaimer: Das Usenet ist *kein* write-only Medium. Du möchtest
vielleicht wenigstens mal die Antwort(en) lesen, die es für Dein
Posting schon gibt...

Re: Zeichenkodierungsverwirrung

am 22.05.2007 09:13:17 von Michael Koch

Hallo Christian,

ich wollte dir nicht auf diese Füsse treten, mit meinem zweiten Post. Ich
wollte nur zusätzlich Infos bereitstellen die euch vielleicht helfen, mir
helfen zu können ;-).

> Bedeutet das, dass Du mit mysql (Kommandozeilentool) die richtigen
> Werte siehst?

Ich mußte mich erstmal mit diesem Tool vertraut machen, deswegen dauerte es
ein bischen.
Wenn ich den Client nutze kommt als Ausgabe: Bausch+ñden und ihre Ursachen.
Also steht auch kein Umlaut als normaler Text drin. Irgendwie scheint es
mir so vorzukommen, daß die Texte die drin stehen, als latin codiert sind
und die "Neuen" seit dem irgendwas am Webserver gedreht wurde als utf.
Leider greife ich mit Excel über myODBC auf die Datenbank zu. Da sind dann
die "Neuen" falsch angezeigt.


> Was ist mit dem connection-character-set? In welcher Kodierung wirft
> Dein Webserver die Daten aus? Wie sind die anderen
> Character-Set-Einstellungen (-> Handbuch!).

Hmm, also ein status mit dem Kommandozeilentool bringt folgendes:

mysql> status
--------------
mysql Ver 14.12 Distrib 5.0.18, for Win32 (ia32)

Connection id: 47
Current database:
Current user: massiv@b14-s02.massiv-stahl.local
SSL: Not in use
Using delimiter: ;
Server version: 5.0.18-nt
Protocol version: 10
Connection: b14-s02 via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
Uptime: 7 hours 12 min 38 sec

Threads: 1 Questions: 528 Slow queries: 0 Opens: 0 Flush tables: 1
Open tables: 0 Queries per second avg: 0.020

Gruß
Michael

Re: Zeichenkodierungsverwirrung

am 22.05.2007 09:44:20 von Christian Kirsch

Am 22.05.2007 09:13 schrieb Michael Koch:

>> Bedeutet das, dass Du mit mysql (Kommandozeilentool) die richtigen
>> Werte siehst?
>
> Ich mußte mich erstmal mit diesem Tool vertraut machen, deswegen dauerte es
> ein bischen.

:-(

> Wenn ich den Client nutze kommt als Ausgabe: Bausch+ñden und ihre Ursachen.
> Also steht auch kein Umlaut als normaler Text drin.

Mit solchen Aussagen kommst Du nirgendwo hin. "Normal" ist schon im
normalen Leben kein taugliches Adjektiv, um Erwartungen zu
beschreiben. Noch weniger in der IT. Es sieht doch da zumindest so
aus, als ob Dir mysql für Deinen einen Umlaut "ä" zwei Byte anzeigen
würde (+ñ) - es *könnte* also UTF-8 in der Tabelle stehen, aber mysql
benutzt aus irgendwelchen Gründen (z.B. Terminalfont?
Terminalkodierung? Connection Character Set? Umgebungsvariable?) eine
andere Kodierung als UTF-8. "Also steht kein Umlaut als normaler Text
drin" kannst Du aus dieser Ausgabe jedenfalls nicht schließen.

> Irgendwie scheint es
> mir so vorzukommen, daß die Texte die drin stehen, als latin codiert sind
> und die "Neuen" seit dem irgendwas am Webserver gedreht wurde als utf.

Tja. Who knows. Du verrätst ja leider nichts wirklich Hilfreiches über
das benutzte System.

> Leider greife ich mit Excel über myODBC auf die Datenbank zu. Da sind dann
> die "Neuen" falsch angezeigt.

Hieß es nicht vor kurzem noch PHPMyAdmin? Unter "falsch" kann sich
niemand etwas vorstellen - da gilt dasselbe wie bei "normal". Es gibt
in der Dokumentation unter dev.mysql.com/doc ein längliches Kapitel
zum Thema Zeichensätze und Sortierreihenfolge (Character sets and
collations). Vielleicht solltest Du das erstmal gründlich lesen und
versuchen, die relevanten Daten aus Deiner Installation zu ermitteln.
Danach könntest Du Dir dann die kleine Mühe machen, Dein Problem
konzise, vollständig und für andere Leute verständlich zu beschreiben.
Diese Bröckchen-Methode, bei der Du uns mal den einen, mal den
anderen Krümel hinwirfst (Excel, PHPMyAdmin, my.cnf, "normal",
"falsch") ist wenig hilfreich.

Und Du suchst doch Hilfe?

>
>
>> Was ist mit dem connection-character-set? In welcher Kodierung wirft
>> Dein Webserver die Daten aus? Wie sind die anderen
>> Character-Set-Einstellungen (-> Handbuch!).
>
> Hmm, also ein status mit dem Kommandozeilentool bringt folgendes:

Hmm. Und im Handbuch steht zu Character-Set wirklich nur "status"?
Dann liest Du eine andere Version als ich. Bei mir haben die
Datenbank, die Tabellen und ggfs auch die Spalten unter Umständen
eigene Kodierungen.