370 Stimmen

Den Standardzeichensatz von MySQL in der Datei my.cnf auf UTF-8 ändern?

Derzeit verwenden wir die folgenden Befehle in PHP, um den Zeichensatz zu setzen UTF-8 in unserer Anwendung.

Da dies ein wenig Overhead bedeutet, würden wir dies gerne als Standardeinstellung in MySQL festlegen. Können wir dies in /etc/my.cnf oder an einem anderen Ort tun?

SET NAMES 'utf8'
SET CHARACTER SET utf8

Ich habe in /etc/my.cnf nach einem Standardzeichensatz gesucht, aber dort steht nichts über Zeichensätze.

Zu diesem Zeitpunkt habe ich die Variablen für den MySQL-Zeichensatz und die Sortierung wie folgt auf UTF-8 gesetzt:

skip-character-set-client-handshake
character_set_client=utf8
character_set_server=utf8

Ist das der richtige Weg, dies zu tun?

1voto

paiego Punkte 3495

Wenn Sie Probleme haben, die Zeichensatzunterstützung des Clients mit MySQL Workbench zu bestätigen, dann beachten Sie bitte den folgenden Hinweis:

Wichtig Alle Verbindungen, die von der MySQL Workbench geöffnet werden, setzen automatisch den Client-Zeichensatz auf utf8 gesetzt. Das manuelle Ändern des Client-Zeichensatzes, zum Beispiel mit SET NAMES ..., kann dazu führen, dass MySQL Workbench die Zeichen nicht korrekt anzeigt. Für weitere Informationen über Client-Zeichensätze finden Sie unter Verbindungszeichensätze und Kollationen.

Daher war ich nicht in der Lage, die Zeichensätze von MySQL Workbench mit my.cnf-Änderungen zu überschreiben, z. B. 'set names utf8mb4'.

1voto

Gajus Punkte 61796

MySQL 5.5, alles was Sie brauchen ist:

[mysqld]
character_set_client=utf8
character_set_server=utf8
collation_server=utf8_unicode_ci

collation_server ist fakultativ.

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

0voto

郭浩伟 Punkte 111

Sie können es so machen, und wenn es nicht funktioniert, müssen Sie mysql neu starten.

-1voto

MYLOGOS Punkte 533

MySQL-Zeichen ändern:

Kunde

default-character-set=utf8

mysqld

character_set_server=utf8

Wir sollten nicht schreiben default-character-set=utf8 in mysqld, denn das könnte zu einem Fehler wie dem folgenden führen:

beginnen: Auftrag konnte nicht gestartet werden

Na endlich:

 +--------------------------+----------------------------+
 | Variable_name            | Value                      |
 +--------------------------+----------------------------+
 | character_set_client     | utf8                       |
 | character_set_connection | utf8                       |
 | character_set_database   | utf8                       |
 | character_set_filesystem | binary                     |
 | character_set_results    | utf8                       |
 | character_set_server     | utf8                       |
 | character_set_system     | utf8                       |
 | character_sets_dir       | /usr/share/mysql/charsets/ |
 +--------------------------+----------------------------+

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X