BITFOX® | LÖSUNGEN | SERVICE | LOGIN | BLOG | KONTAKT

Freitag, 22. Februar 2019

Olli sag mal:
Unknown OS Charakter set 'ISO-8859-15'

mysql: unknown os charakter set 'ISO-8859-15'.
mysql: switching to default charakter set 'utf8'
Grade wuselten am Linux-Terminal Fehlermeldungen der mySQL-Datenbank über den Bildschirm: "mysql: Unknown OS charakter set 'ISO-8859-15'. mysql: Switching to default charakter set 'utf8'. " -
Ein Standard-Problem und schnell zu beheben.




Lesen wir einmal die Meldung ganz genau:

mysql: Unknown OS charakter set 'ISO-8859-15'
Ahah - mySQL mag uns sagen, dass im Betriebssystem der Zeichensatz ISO-8859-15 gesetzt worden ist - und mySQL damit nichts anfangen kann. Das ist "üblich", denn zumeist wird hier 'utf-8' benutzt.

mysql: Switching to the default charakter set 'utf8'
mySQL ist so klug und sagt nun, es stellt sich selbst auf 'utf-8' um. Prima.
Man könnte also die Fehlermeldung getrost übergehen... aber fixen wir doch lieber einmal das Problem: Die "Language-Variablen" der Shell hängen "krumm."

Was bedeutet das?
Wenn man sich immer in seinem eigenen Land aufhält, dann spricht man meist die Muttersprache und ist mit den LOCALEn Gegebenheiten vertraut. Fährt man aber nur mal einen Meter über der Landesgrenze, wird es interessant, denn jedes Land hat so seine besonderen Gegebenheiten:
In Deutschland gibt es öäü und das Datum schreibt sich normalerweise in tag.monat.jahr ---
in Frankreich finden wir schon interessanteste á à ó ò ú Ú â ô û usw.
Geht man aus Europa heraus, gibt es noch viel interessantere Sitten:
Dort schreibt man eine Zahl mit "Nachkomma-Stellen", z.B. 1,99 Euro,  mit einem "Punkt" - also  1.99€  und das Datum? Das schreibt man da ggf. z.B. Jahr/Monat/Tag .
Das Chaos ist also perfekt, wenn man seinen Betriebssystem keine ordentlichen Referenzen für die Sprache und die Lokalen Einstellungen mit auf den Weg gibt.

Schauen wir mal, welche Spache / Region aktuell an dem fehlerhaften Terminal eingestellt ist:

splunk@Dxxxyyy:~> echo "${LANG}"
de_DE@euro
splunk@Dxxxyyy:~> echo "${LC_ALL}"

splunk@Dxxxyyy:~>


An der aktuellen Maschine ist wohl die Sprache (LANG) de_DE in der Eurozone eingestellt - LC_ALL (das Regionssetting) fehlt mal gleich ganz.
Beides kann insbesondere in BASH-Scripten zu Problemen führen, denn der "übliche Programmierer" geht meist von us_US und amerikanischen Gegebenheiten aus und vergisst auch gern, das so in seinem Script zu betonen.
Fügen wir also doch einmal folgende Zeilen in das BASH-Script hinzu:

export LANG=en_US=.UTF-8
export LC_ALL=en_US.UTF-8


und damit das auch funktioniert, müssen wir die Definitionen installieren.

localedef -i en_US

Wenn wir ohnehin lieber US-Englisch und Locales der USA nutzen, setzen wir das ganze gleich fest im System.

localedef -i en_US -f UTF-8 en_US.UTF-8


"Und - läuft?"
"Läuft."

....weiter gehts.

Keine Kommentare:

Aktuelles