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?

6voto

Unter Fedora 21

$ vi /etc/my.cnf

Folgen hinzufügen:

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake

Speichern und beenden.

Denken Sie abschließend daran, den Dienst mysqld neu zu starten mit service mysqld restart .

4voto

Loren Punkte 12256

Die Richtlinie wurde geändert in character-set-system=utf8

http://dev.mysql.com/doc/refman/5.6/en/charset-configuration.html

4voto

Lihang Li Punkte 351

MySQL-Versionen und Linux-Distributionen können bei der Konfiguration eine Rolle spielen.

Allerdings sind die Änderungen unter [mysqld] Abschnitt wird gefördert.

Ich möchte eine kurze Erläuterung zur Antwort von tomazzlender geben:

[mysqld] 
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake

[mysqld]

Dadurch wird collation_connection in utf8_unicode_ci geändert.

init_connect='SET collation_connection = utf8_unicode_ci'

Verwendung von SET NAMES :

init_connect='SET NAMES utf8'

Die SET NAMES werden drei Zeichen beeinflussen, das heißt:

character_set_client
character_set_results
character_set_connection

Damit wird die character_set_database & character_set_server

character-set-server=utf8

Dies betrifft nur collation_database und collation_server

collation-server=utf8_unicode_ci

Tut mir leid, ich bin mir nicht sicher, wozu das gut sein soll. Ich benutze es jedenfalls nicht:

skip-character-set-client-handshake

1voto

Sudhakar Krishnan Punkte 666

enter image description here

Para utf8mb4_allgemein_ci

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

Gemäß der Dokumentation des Symfony-Frameworks unter https://symfony.com/doc/2.6/book/doctrine.html#configuring-the-database

Wir empfehlen, nicht den utf8-Zeichensatz von MySQL zu verwenden, da dieser nicht 4-Byte-Unicode-Zeichen nicht unterstützt, und Strings, die diese enthalten, werden abgeschnitten werden. Dies wird durch den neueren Zeichensatz utf8mb4 behoben.

1voto

John Wen Punkte 11

Wenn Sie durch Ihre Einstellung für Client und conn verwirrt sind, wird nach dem Neustart des mysql-Dienstes zurückgesetzt. Versuchen Sie diese Schritte (die bei mir funktioniert haben):

  1. vi /etc/my.cnf
  2. fügen Sie die Inhalte blow und :wq [client] character-sets-dir=/usr/local/mysql/share/mysql/charsets
  3. mysql neu starten und mysql anmelden, Datenbank verwenden, Befehl eingeben status; finden Sie, dass der Zeichensatz für "client" und "conn" auf "utf8" gesetzt ist.

Prüfen Sie die Referenz für weitere Informationen.

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