From 3cde7af742780196108c226cad7a16d98f51e95b Mon Sep 17 00:00:00 2001 From: Sven Strickroth Date: Fri, 7 May 2021 17:55:18 +0200 Subject: [PATCH] UTF8 is no real UTF8 in MySQL, on needs to use utf8mb4 This allows to use emojis in vacation mails. Signed-off-by: Sven Strickroth --- VIRTUAL_VACATION/vacation.pl | 2 +- functions.inc.php | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/VIRTUAL_VACATION/vacation.pl b/VIRTUAL_VACATION/vacation.pl index ed18d964..034b5e64 100644 --- a/VIRTUAL_VACATION/vacation.pl +++ b/VIRTUAL_VACATION/vacation.pl @@ -208,7 +208,7 @@ if (!$dbh) { my $db_true; # MySQL and PgSQL use different values for TRUE, and unicode support... if ($db_type eq 'mysql') { - $dbh->do('SET CHARACTER SET utf8;'); + $dbh->do('SET CHARACTER SET utf8mb4;'); $db_true = '1'; } else { # Pg $dbh->do("SET CLIENT_ENCODING TO 'UTF8'"); diff --git a/functions.inc.php b/functions.inc.php index 61a28dff..5cbf2233 100644 --- a/functions.inc.php +++ b/functions.inc.php @@ -1626,9 +1626,9 @@ function db_connection_string() $database_name = Config::read_string('database_name'); if ($socket) { - $dsn = "mysql:unix_socket={$socket};dbname={$database_name};charset=UTF8"; + $dsn = "mysql:unix_socket={$socket};dbname={$database_name};charset=utf8mb4"; } else { - $dsn = "mysql:host={$CONF['database_host']};dbname={$database_name};charset=UTF8"; + $dsn = "mysql:host={$CONF['database_host']};dbname={$database_name};charset=utf8mb4"; } } elseif (db_sqlite()) { $db = $CONF['database_name']; @@ -1699,8 +1699,8 @@ function db_connect() $options[PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT] = (bool)$verify; } - $queries[] = 'SET CHARACTER SET utf8'; - $queries[] = "SET COLLATION_CONNECTION='utf8_general_ci'"; + $queries[] = 'SET CHARACTER SET utf8mb4'; + $queries[] = "SET COLLATION_CONNECTION='utf8mb4_general_ci'"; } elseif (db_sqlite()) { $db = $CONF['database_name'];