Zum Inhalt springen

Wie mysql auf utf-8 festlegen????

Erstellt am 7. Dezember 2005 · 12 Antworten · letzte Antwort am 11. Dezember 2005

Tags: Datenbank, Frage

snurf ·

Hi Freaks,

kurze Fräge zu MySQL-Variablen:

Wenn ich mir die Variablen nach der Installation an schaue dann sehe ich folgendes:

Database changed
mysql> show variables;
+---------------------------+----------------------------+
| Variable_name | Value |
+---------------------------+----------------------------+
| back_log = 50
| basedir = /
| binlog_cache_size = 32768
| bulk_insert_buffer_size = 8388608
| character_set_client = latin1
| character_set_connection = latin1
| character_set_database = latin1
| character_set_results = latin1
| character_set_server = latin1
| character_set_system = utf8
| character_sets_dir = /usr/share/mysql/charsets/
| collation_connection = latin1_swedish_ci
| collation_database = latin1_swedish_ci
| collation_server = latin1_swedish_ci
...

Das "characterset-set-system" hat ja schonmal den Wert "utf8". Wie mache ich das für den Rest? Welche Werte muss ich verwenden "utf8" oder "utf-8" und "utf8_unicode_ci"?? - Oder muss ich da gar nichts ändern? Im Forum steht dazu meistens nur "DB auf utf8 umstellen ...". Und auf mysql.org steig ich nicht durch. Ja utf8, nur WIE? #angry#

Kann man das vielleicht schon vor der Installation dies in der database.sql einbinden? #paralyzed#

snurf ·

@susanne:

danke für den Link. Leider ist die Konvertierung nicht das Problem, sondern die Standardwerte vom MySQL-Server. Denn wenn neue Tabellen angelegt werden, dann sollen die mit utf8 /utf8_unicode_ci angelgt werden. Das ist doch wichtig wenn ich irgendwelche Extensions installiere, oder ??? 😢

tandem ·

Hallo,

# Anfang Spracheinstellungen auf utf-8
in All Configuration
Variable $TYPO3_CONF_VARS[BE][forceCharset] = utf-8
im TypoScript-Setup
page.config.metaCharset = utf-8
# Ende Spracheinstellungen auf utf-8

und die Datenbank mit:
CREATE DATABASE 'dbName' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
anlegen.

MfG

snurf ·

@tandem:

danke, dass mit der Datenbank war wohl das was ich suchte! Allerdings dachte ich, es gibt eine globale Servereinstellung, so dass neue Datenbanken,Tabellen und Spalten immer mit " DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci"angelegt werden.
Bei den Typo3-Einstellungen wäre es noch wichtig den Header zu ändern:

page.config.additionalHeaders = Content-Type:text/html;charset=utf-8

Aber danke erstmal! o.O

snurf ·

das Ergebnis sieht dann so aus:

Database changed
mysql> show variables;
+---------------------------------+---------
| Variable_name | Value
+---------------------------------+---------
| back_log = 50
| basedir = /
| binlog_cache_size = 32768
| bulk_insert_buffer_size = 8388608
| character_set_client = latin1
| character_set_connection = latin1
| character_set_database = utf8
| character_set_results = latin1
| character_set_server = latin1
| character_set_system = utf8
| character_sets_dir = /usr/share/mysql/charsets/
| collation_connection = latin1_swedish_ci
| collation_database = utf8_unicode_ci
| collation_server = latin1_swedish_ci

Nun müsste noch die Einstellung für ..._client, ..._connection, ..._results, ..._server umgestellt werden. Bei mysql.org habe ich gelesen, dass man dies bewerkstelligen kann, wenn man mysql neu compiliert. Aber das kann doch nicht die Lösung sein! #angry# Über die my.cnf kann vielleicht noch ..._connection und ..._client einstellen. Kann mir da vielleicht noch jemand helfen???

tandem ·

Hallo,

in my.cnf
folgende Zeilen eintragen:

[client]
default-character-set=utf8

und falls der server auch utf8 benutzen soll:
[server]
default-character-set=utf8

MfG

snurf ·

@tandem:

super, es wird immer besser! Habe jetzt folgendes in my.cnf eingetragen:

[mysqld]
user=cnasto_snurf
default-character-set=utf8
[client]
default-character-set=utf8
[server]
default-character-set=utf8
default-default-collation=utf8_unicode_ci

folgendes Ergebins:

mysql> show variables;
+--------------------------------
| Variable_name = Value
+--------------------------------
| back_log = 50
| basedir = /
| binlog_cache_size = 32768
| bulk_insert_buffer_size = 8388608
| character_set_client = utf8
| character_set_connection = utf8
| character_set_database = utf8
| character_set_results = utf8
| character_set_server = utf8
| character_set_system = utf8
| character_sets_dir = /usr/share/mysql/charsets/
| collation_connection = utf8_general_ci
| collation_database = utf8_unicode_ci
| collation_server = utf8_unicode_ci
| concurrent_insert = ON
| connect_timeout= 5

Wenn ich jetzt noch rausbekomme, wo ich die "collation_connection" auf "utf8_unicode_ci" umstellen kann, bin ich glücklich! (utf8_general_ci ist wohl nur der Standard für utf8-) 8-)

tandem ·

Hallo,

ist Folgendes wirklich so eingetragen?

default-default-collation=utf8_unicode_ci

wegen der collation_connection schaue ich nochmal nach.

MfG[/u]

tandem ·

Hallo,

nach meinem Verständtnis sollte die Collation
ja nur Einfluss auf die Sortierung (Index) haben.
Wenn das so ist, dann ist collation_connection = utf8_general_ci gleichbedeutend mit collation_connection = utf8_unicode_ci

oder weißt Du da mehr?!

MfG

snurf ·

@tandem:

also, das doppelte "default" war nur ein Tippfehler. Es ist "default-collation=utf8_unicode_ci" eingetragen.
Ich kenne den Unterschied zwischen "general" und "unicode" nicht. Aber auf mysql.org wird dies auch heftig diskutiert. Mir geht es vorallem bei Typo3 um "indexed_search". Ich bin schon mehrmals auf die Nase gefallen und möchte die Sache schon auf der Datenbankseite sauber installieren.
o.O

siehe: #252576

tandem ·

Hallo,

hier eine Ausgabe von phpMyAdmin:

Variable Wert für diese Sitzung Globaler Wert

character set client utf8 utf8
character set connection utf8 utf8
character set database utf8 utf8
character set results utf8 utf8
character set server utf8 utf8
character set system utf8 utf8

collation connection utf8_general_ci utf8_unicode_ci
collation database utf8_unicode_ci utf8_unicode_ci
collation server utf8_unicode_ci utf8_unicode_ci

Die Ausgabe gibt als Globalen Wert den von Dir gewollten Wert an.
Als Wert für diese Sitzung den utf8_general_ci an.

Also bestimmt der abfragende Client den Wert!

Also ist alles richtig.

MfG
P.s. Schau Dir die Ausgabe der Variablen unter phpMyAdmin selbst an.

snurf ·

@tandem:

Gut, ich gebe mich geschlagen und denke wir können den thread abschließen - danke für Deine Unterstützung! 🙂