From 469c76151425b53f24ba26f671ea17a7595c3434 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Wed, 26 Mar 2014 20:38:32 +0000 Subject: [PATCH] Bug 11906: ensure that Koha::Database uses UTF8 mode when connecting to databases This patch fixes an issue whereby the DBIx::Class schema objects were not connecting to the underlying database in UTF8 mode. This most visibility manifested as patron list pages not displaying diacritics correctly. To test: [1] Create a patron list, and make sure that it contains at least one patron whose name or patron category description contains a non-ASCII character. [2] View the list contents; the diacritics should appear mangled. [3] Apply the patch. [4] View the patron list again. This time, the diacritics should be displayed correctly. Note that Apache will also log "list.pl: Wide character in print ...", but this is the lesser of two evils. [5] Verify that prove -v t/db_dependent/Koha_Database.t passes. [6] (extra credit) Verify that t/db_dependent/Koha_Database.t passes when connect to a PostgreSQL database. Signed-off-by: Galen Charlton Signed-off-by: Chris Cormack Signed-off-by: Jonathan Druart Signed-off-by: Galen Charlton (cherry picked from commit 05a6beba9f023f87d3355b6e72f35b220cd691b0) Signed-off-by: Fridolin Somers --- Koha/Database.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Koha/Database.pm b/Koha/Database.pm index 4c6cae6f4e..f7c3ab3939 100644 --- a/Koha/Database.pm +++ b/Koha/Database.pm @@ -59,9 +59,13 @@ sub _new_schema { my $db_port = $context->config("port") || ''; my $db_user = $context->config("user"); my $db_passwd = $context->config("pass"); + + my $db_opts = ($db_driver eq 'mysql') ? { mysql_enable_utf8 => 1 } : + ($db_driver eq 'Pg') ? { pg_enable_utf8 => 1 } : + { }; my $schema = Koha::Schema->connect( "DBI:$db_driver:dbname=$db_name;host=$db_host;port=$db_port", - $db_user, $db_passwd ); + $db_user, $db_passwd, $db_opts ); return $schema; } -- 2.39.5