From 52f2d8953dbf3a59382a9ecc4c9fa113be4001b2 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 --- Koha/Database.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Koha/Database.pm b/Koha/Database.pm index 12758bf..b259ca0 100644 --- a/Koha/Database.pm +++ b/Koha/Database.pm @@ -53,9 +53,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; } -- 1.7.10.4