diff options
-rw-r--r-- | Bugzilla.pm | 1 | ||||
-rwxr-xr-x | contrib/recode.pl | 14 |
2 files changed, 12 insertions, 3 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm index 5a9d23e14..7c52dd500 100644 --- a/Bugzilla.pm +++ b/Bugzilla.pm @@ -53,6 +53,7 @@ our $_request_cache = {}; use constant SHUTDOWNHTML_EXEMPT => [ 'editparams.cgi', 'checksetup.pl', + 'recode.pl', ]; # Non-cgi scripts that should silently exit. diff --git a/contrib/recode.pl b/contrib/recode.pl index 7db01dddf..10a4cbb44 100755 --- a/contrib/recode.pl +++ b/contrib/recode.pl @@ -174,9 +174,17 @@ if (exists $switch{'overrides'}) { my $dbh = Bugzilla->dbh; -# Make the database give us raw bytes. -$dbh->do('SET character_set_results = NULL') - if $dbh->isa('Bugzilla::DB::Mysql'); +if ($dbh->isa('Bugzilla::DB::Mysql')) { + # Get the actual current encoding of the DB. + my $collation_data = $dbh->selectrow_arrayref( + "SHOW VARIABLES LIKE 'character_set_database'"); + my $db_charset = $collation_data->[1]; + # Set our connection encoding to *that* encoding, so that MySQL + # correctly accepts our changes. + $dbh->do("SET NAMES $db_charset"); + # Make the database give us raw bytes. + $dbh->do('SET character_set_results = NULL') +} $dbh->begin_work; |