MariaDB-clients verwenden standardmäßig UTF-8
Wie bekomme ich MariaDB-clients, die UTF-8 verwenden? Ich habe nicht dieses problem mit MySQL der entsprechenden version. Ich bin versucht dies zu tun, ohne die Erteilung SET NAMES
durch den AUFTRAGGEBER. Ich bekomme latin1 mit der cmd-line client und php-mysqli-Treiber.
PHP mysqli_get_charset:
print_r(mysqli_get_charset($link));
stdClass Object
(
[charset] => latin1
[collation] => latin1_swedish_ci
[dir] =>
[min_length] => 1
[max_length] => 1
[number] => 8
[state] => 1
[comment] =>
)
Hier ist die Ausgabe der Kommandozeilen-client:
echo "show variables like 'char%';" | mysql -u root -p
Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database latin1
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Hier ist meine meine.cnf-Datei.
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set=utf8
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
default-character-set=utf8
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
default-character-set = utf8
default-collation = utf8_general_ci
character_set_server = utf8
collation_server = utf8_general_ci
init_connect='SET NAMES utf8'
key_buffer = 512M
max_allowed_packet = 64M
thread_stack = 192K
thread_cache_size = 8
myisam-recover = BACKUP
query_cache_limit = 4M
query_cache_size = 64M
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 64M
default-character-set=utf8
[mysql]
no-auto-rehash # faster start of mysql but no tab completition
default_character_set=utf8
[isamchk]
key_buffer = 128M
[client-server]
default-character-set=utf8
[client-mariadb]
default-character-set=utf8
!includedir /etc/mysql/conf.d/
Sie möchten, ändern Sie den Zeichensatz Ihrer Datenbank??...ist das deine Frage??
Nein, ich will MariaDB zu beauftragen clients für die Verwendung von UTF-8 als Standard-Zeichensatz. Ich geändert meine Frage und fügte hinzu, einige PHP-Ausgabe.
stackoverflow.com/questions/202205/...
Sehen Sie hier, stackoverflow.com/a/46149857/2803344
Nein, ich will MariaDB zu beauftragen clients für die Verwendung von UTF-8 als Standard-Zeichensatz. Ich geändert meine Frage und fügte hinzu, einige PHP-Ausgabe.
stackoverflow.com/questions/202205/...
Sehen Sie hier, stackoverflow.com/a/46149857/2803344
InformationsquelleAutor Matthew Scragg | 2013-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, Sie sollte nicht Problem
SET NAMES
über den client sowieso.Weil dieser Befehl ist nicht genügend, denn neben dem server müssen Sie die client-Kodierung sowie. Und dies kann nur durch die Verwendung von API-Funktion. Also, statt der ausstellenden
SET NAMES
Abfrage, in Ihren PHP-Skripten sollten Sie die client-Kodierung durchmsql(i)_set_charset()
Funktion oder DSN.Also, denken Sie daran - ändern der Standard-Kodierung nicht zu entlasten Sie von der Notwendigkeit der Einstellung der Zeichencodierung in PHP.
Trotzdem
utf-8
macht mehr Sinn, als Standard, alslatin1
. Fügen Sie also die folgende Zeile inmy.ini
unter[mysqld]
AbschnittInformationsquelleAutor Your Common Sense
Ich herausgefunden, das problem. Ich installierte mariadb mit Ihren repo-und apt-get. Alles schien zu gehen, ok. Ich hatte diese wirklich langsam startet mit dem Befehl
service mysql restart
und auch die encoding-Problem. Ich merkte, dass es 2 Instanzen von mysqld, ich ging voran und schickte eine kill-Befehl würde ich nicht empfehlen, kill -9, regelmäßige töten, hat Prima funktioniert. Dann hatservice mysql restart
es begann schnell, die Zeichenkodierung funktioniert wie erwartet.service mysql restart
Problem. Festen, nach der Lektüre Ihre Antwort. Vielen Dank!InformationsquelleAutor Matthew Scragg