]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 902395: Enforce utf8 = true for all installations and remove the utf8 parameter
authorFrédéric Buclin <LpSolit@gmail.com>
Sun, 15 Mar 2015 12:50:28 +0000 (13:50 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Sun, 15 Mar 2015 12:50:28 +0000 (13:50 +0100)
r=dkl a=sgreen

29 files changed:
Bugzilla.pm
Bugzilla/Attachment/PatchReader.pm
Bugzilla/BugMail.pm
Bugzilla/CGI.pm
Bugzilla/Config.pm
Bugzilla/Config/Common.pm
Bugzilla/Config/General.pm
Bugzilla/DB/Mysql.pm
Bugzilla/DB/Oracle.pm
Bugzilla/DB/Pg.pm
Bugzilla/DB/Schema/Mysql.pm
Bugzilla/DB/Schema/Pg.pm
Bugzilla/DB/Sqlite.pm
Bugzilla/Mailer.pm
Bugzilla/Template.pm
Bugzilla/Token.pm
Bugzilla/Util.pm
Bugzilla/WebService/Server/JSONRPC.pm
collectstats.pl
docs/en/rst/administering/parameters.rst
email_in.pl
showdependencygraph.cgi
template/en/default/admin/params/general.html.tmpl
template/en/default/bug/show.xml.tmpl
template/en/default/config.rdf.tmpl
template/en/default/global/header.html.tmpl
template/en/default/global/messages.html.tmpl
template/en/default/list/list.atom.tmpl
template/en/default/list/list.rdf.tmpl

index 6ca46f430f1a5e33ea912c46442e1e3daf54dff7..3aa6e5489baa4bcf7a81141c522698257d3110e8 100644 (file)
@@ -77,7 +77,7 @@ sub init_page {
     if (Bugzilla->usage_mode == USAGE_MODE_CMDLINE) {
         init_console();
     }
-    elsif (Bugzilla->params->{'utf8'}) {
+    else {
         binmode STDOUT, ':utf8';
     }
 
index d0e22122028db2cd7db52453c8ef8b6f60061f87..202f4b4fdecdbd229cba75facc276b623e2b6bec 100644 (file)
@@ -73,12 +73,10 @@ sub process_diff {
         $vars->{'other_patches'} = \@other_patches;
 
         setup_template_patch_reader($reader, $vars);
-        # The patch is going to be displayed in a HTML page and if the utf8
-        # param is enabled, we have to encode attachment data as utf8.
-        if (Bugzilla->params->{'utf8'}) {
-            $attachment->data; # Populate ->{data}
-            utf8::decode($attachment->{data});
-        }
+        # The patch is going to be displayed in a HTML page, so we have
+        # to encode attachment data as utf8.
+        $attachment->data; # Populate ->{data}
+        utf8::decode($attachment->{data});
         $reader->iterate_string('Attachment ' . $attachment->id, $attachment->data);
     }
 }
@@ -91,9 +89,8 @@ sub process_interdiff {
 
     require PatchReader::Raw;
 
-    # Encode attachment data as utf8 if it's going to be displayed in a HTML
-    # page using the UTF-8 encoding.
-    if ($format ne 'raw' && Bugzilla->params->{'utf8'}) {
+    # Encode attachment data as utf8 if it's going to be displayed in a HTML page.
+    if ($format ne 'raw') {
         $old_attachment->data; # Populate ->{data}
         utf8::decode($old_attachment->{data});
         $new_attachment->data; # Populate ->{data}
@@ -130,7 +127,7 @@ sub process_interdiff {
         $use_select = 1;
     }
 
-    if ($format ne 'raw' && Bugzilla->params->{'utf8'}) {
+    if ($format ne 'raw') {
         binmode $interdiff_stdout, ':utf8';
         binmode $interdiff_stderr, ':utf8';
     } else {
@@ -230,7 +227,7 @@ sub get_unified_diff {
 
     # Prints out to temporary file.
     my ($fh, $filename) = File::Temp::tempfile();
-    if ($format ne 'raw' && Bugzilla->params->{'utf8'}) {
+    if ($format ne 'raw') {
         # The HTML page will be displayed with the UTF-8 encoding.
         binmode $fh, ':utf8';
     }
index 7dfb482381860dee917e868529abf8a664af6b4f..df39bd108af96f0cc3ceb932fc6a5c495ff8f12f 100644 (file)
@@ -472,7 +472,7 @@ sub _generate_bugmail {
     } else {
         $email->content_type_set('multipart/alternative');
         # Some mail clients need same encoding for each part, even empty ones.
-        $email->charset_set('UTF-8') if Bugzilla->params->{'utf8'};
+        $email->charset_set('UTF-8');
     }
     $email->parts_set(\@parts);
     return $email;
index fb97195470fda4477281b0a5f5c84079cbb27491..0b1712d2ffa93091198a2e4ca87fd21077ccc8e6 100644 (file)
@@ -73,7 +73,7 @@ sub new {
     }
 
     # Send appropriate charset
-    $self->charset(Bugzilla->params->{'utf8'} ? 'UTF-8' : '');
+    $self->charset('UTF-8');
 
     # Redirect to urlbase/sslbase if we are not viewing an attachment.
     if ($self->url_is_attachment_base and $script ne 'attachment.cgi') {
@@ -378,9 +378,7 @@ sub param {
         }
 
         # Fix UTF-8-ness of input parameters.
-        if (Bugzilla->params->{'utf8'}) {
-            @result = map { _fix_utf8($_) } @result;
-        }
+        @result = map { _fix_utf8($_) } @result;
 
         return wantarray ? @result : $result[0];
     }
index 1e22b5239730e23444842c438d1dc50a368b3bbb..5a8117c2986b60b8f19a568f5dbfe9f3783f6f5d 100644 (file)
@@ -231,8 +231,6 @@ sub update_params {
         }
     }
 
-    $param->{'utf8'} = 1 if $new_install;
-
     # Bug 452525: OR based groups are on by default for new installations
     $param->{'or_groups'} = 1 if $new_install;
 
index b6e58b3182ddb8347280afc2ec23cebc69b39172..52a2f8f1165b75aa131d65e4093cedbb90429278 100644 (file)
@@ -25,7 +25,7 @@ use parent qw(Exporter);
     qw(check_multi check_numeric check_regexp check_group
        check_sslbase check_priority check_severity check_platform
        check_opsys check_shadowdb check_urlbase check_user_verify_class
-       check_ip check_mail_delivery_method check_notification check_utf8
+       check_ip check_mail_delivery_method check_notification
        check_bug_status check_smtp_auth check_theschwartz_available
        check_maxattachmentsize check_email check_smtp_ssl
        check_comment_taggers_group check_smtp_server
@@ -115,18 +115,6 @@ sub check_ip {
     return "";
 }
 
-sub check_utf8 {
-    my $utf8 = shift;
-    # You cannot turn off the UTF-8 parameter if you've already converted
-    # your tables to utf-8.
-    my $dbh = Bugzilla->dbh;
-    if ($dbh->isa('Bugzilla::DB::Mysql') && $dbh->bz_db_is_utf8 && !$utf8) {
-        return "You cannot disable UTF-8 support, because your MySQL database"
-               . " is encoded in UTF-8";
-    }
-    return "";
-}
-
 sub check_priority {
     my ($value) = (@_);
     my $legal_priorities = get_legal_field_values('priority');
@@ -490,8 +478,6 @@ valid group is provided.
 
 =item check_maxattachmentsize
 
-=item check_utf8
-
 =item check_group
 
 =item check_opsys
index 380680590adce7d30a3356e372928cb2516313e9..8513a1f02b378990e29759d13c0ceb86b5641e17 100644 (file)
@@ -24,13 +24,6 @@ use constant get_param_list => (
    checker => \&check_email
   },
 
-  {
-   name => 'utf8',
-   type => 'b',
-   default => '0',
-   checker => \&check_utf8
-  },
-
   {
    name => 'shutdownhtml',
    type => 'l',
index 389cc6baa9c25c1756b52e6846e4d408cc87ec05..402e9c58b0a828d3194b2f0133c91277ad969f29 100644 (file)
@@ -54,7 +54,7 @@ sub new {
     $dsn .= ";mysql_socket=$sock" if $sock;
 
     my %attrs = (
-        mysql_enable_utf8 => Bugzilla->params->{'utf8'},
+        mysql_enable_utf8 => 1,
         # Needs to be explicitly specified for command-line processes.
         mysql_auto_reconnect => 1,
     );
@@ -74,9 +74,8 @@ sub new {
     my $self = $class->db_new({ dsn => $dsn, user => $user, 
                                 pass => $pass, attrs => \%attrs });
 
-    # This makes sure that if the tables are encoded as UTF-8, we
-    # return their data correctly.
-    $self->do("SET NAMES utf8") if Bugzilla->params->{'utf8'};
+    # This makes sure that we return table names correctly.
+    $self->do("SET NAMES utf8");
 
     # all class local variables stored in DBI derived class needs to have
     # a prefix 'private_'. See DBI documentation.
@@ -543,13 +542,11 @@ sub bz_setup_database {
 
     # If there are no tables, but the DB isn't utf8 and it should be,
     # then we should alter the database to be utf8. We know it should be
-    # if the utf8 parameter is true or there are no params at all.
+    # if there are no params at all.
     # This kind of situation happens when people create the database
     # themselves, and if we don't do this they will get the big
     # scary WARNING statement about conversion to UTF8.
-    if ( !$self->bz_db_is_utf8 && !@tables 
-         && (Bugzilla->params->{'utf8'} || !scalar keys %{Bugzilla->params}) )
-    {
+    if (!$self->bz_db_is_utf8 && !@tables) {
         $self->_alter_db_charset_to_utf8();
     }
 
@@ -653,7 +650,7 @@ sub bz_setup_database {
                    MAX_ROWS=100000");
     }
 
-    # Convert the database to UTF-8 if the utf8 parameter is on.
+    # Convert the database to UTF-8.
     # We check if any table isn't utf8, because lots of crazy
     # partial-conversion situations can happen, and this handles anything
     # that could come up (including having the DB charset be utf8 but not
@@ -665,8 +662,8 @@ sub bz_setup_database {
           WHERE TABLE_SCHEMA = ? AND TABLE_COLLATION IS NOT NULL 
                 AND TABLE_COLLATION NOT LIKE 'utf8%' 
           LIMIT 1", undef, $db_name);
-    
-    if (Bugzilla->params->{'utf8'} && $non_utf8_tables) {
+
+    if ($non_utf8_tables) {
         print "\n", install_string('mysql_utf8_conversion');
 
         if (!Bugzilla->installation_answers->{NO_PAUSE}) {
@@ -681,8 +678,7 @@ sub bz_setup_database {
             }
         }
 
-        print "Converting table storage format to UTF-8. This may take a",
-              " while.\n";
+        say 'Converting table storage format to UTF-8. This may take a while.';
         foreach my $table ($self->bz_table_list_real) {
             my $info_sth = $self->prepare("SHOW FULL COLUMNS FROM $table");
             $info_sth->execute();
@@ -699,7 +695,7 @@ sub bz_setup_database {
                 {
                     my $name = $column->{Field};
 
-                    print "$table.$name needs to be converted to UTF-8...\n";
+                    say "$table.$name needs to be converted to UTF-8...";
 
                     # These will be automatically re-created at the end
                     # of checksetup.
@@ -737,7 +733,7 @@ sub bz_setup_database {
                     }
                 }
 
-                print "Converting the $table table to UTF-8...\n";
+                say "Converting the $table table to UTF-8...";
                 my $bin = "ALTER TABLE $table " . join(', ', @binary_sql);
                 my $utf = "ALTER TABLE $table " . join(', ', @utf8_sql,
                           'DEFAULT CHARACTER SET utf8');
@@ -761,11 +757,9 @@ sub bz_setup_database {
     # a mysqldump.) So we have this change outside of the above block,
     # so that it just happens silently if no actual *table* conversion
     # needs to happen.
-    if (Bugzilla->params->{'utf8'} && !$self->bz_db_is_utf8) {
-        $self->_alter_db_charset_to_utf8();
-    }
+    $self->_alter_db_charset_to_utf8() unless $self->bz_db_is_utf8;
 
-     $self->_fix_defaults();
+    $self->_fix_defaults();
 
     # Bug 451735 highlighted a bug in bz_drop_index() which didn't
     # check for FKs before trying to delete an index. Consequently,
index 7424019ac7fd3e3bd574b865e1e0beb5da10a3fe..51678dec9ee1e4d39ec946e09d2443e5bd7c8cf6 100644 (file)
@@ -55,7 +55,7 @@ sub new {
     $dbname ||= Bugzilla->localconfig->{db_name};
 
     # Set the language enviroment
-    $ENV{'NLS_LANG'} = '.AL32UTF8' if Bugzilla->params->{'utf8'};
+    $ENV{'NLS_LANG'} = '.AL32UTF8';
 
     # construct the DSN from the parameters we got
     my $dsn = "dbi:Oracle:host=$host;sid=$dbname";
@@ -74,8 +74,7 @@ sub new {
     # Set the session's default date format to match MySQL
     $self->do("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS'");
     $self->do("ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS'");
-    $self->do("ALTER SESSION SET NLS_LENGTH_SEMANTICS='CHAR'") 
-        if Bugzilla->params->{'utf8'};
+    $self->do("ALTER SESSION SET NLS_LENGTH_SEMANTICS='CHAR'");
     # To allow case insensitive query.
     $self->do("ALTER SESSION SET NLS_COMP='ANSI'");
     $self->do("ALTER SESSION SET NLS_SORT='BINARY_AI'");
index 59231e2a6e4d5307cef301bcb4e8d4e4ae9fce5c..37f06c354a50ef2671848122f18a779b0f648b49 100644 (file)
@@ -53,7 +53,7 @@ sub new {
     # creating tables.
     $dsn .= ";options='-c client_min_messages=warning'";
 
-    my $attrs = { pg_enable_utf8 => Bugzilla->params->{'utf8'} };
+    my $attrs = { pg_enable_utf8 => 1 };
 
     my $self = $class->db_new({ dsn => $dsn, user => $user, 
                                 pass => $pass, attrs => $attrs });
index 1dc408654e99dc8621adda9d7787ec6daa7a30b9..db01e971dfc8d9a57f7a46ff58edfeaf142ad61d 100644 (file)
@@ -148,12 +148,7 @@ sub _get_create_index_ddl {
 
 sub get_create_database_sql {
     my ($self, $name) = @_;
-    # We only create as utf8 if we have no params (meaning we're doing
-    # a new installation) or if the utf8 param is on.
-    my $create_utf8 = Bugzilla->params->{'utf8'} 
-                      || !defined Bugzilla->params->{'utf8'};
-    my $charset = $create_utf8 ? "CHARACTER SET utf8" : '';
-    return ("CREATE DATABASE `$name` $charset");
+    return ("CREATE DATABASE `$name` CHARACTER SET utf8");
 }
 
 # MySQL has a simpler ALTER TABLE syntax than ANSI.
index 03a3b0a486851e8b88b4b7f31a102ae3ce7c8ab6..dd8531927eebd6ea64ceefc4748ab7c2bbe65529 100644 (file)
@@ -79,12 +79,7 @@ sub _initialize {
 
 sub get_create_database_sql {
     my ($self, $name) = @_;
-    # We only create as utf8 if we have no params (meaning we're doing
-    # a new installation) or if the utf8 param is on.
-    my $create_utf8 = Bugzilla->params->{'utf8'}
-                      || !defined Bugzilla->params->{'utf8'};
-    my $charset = $create_utf8 ? "ENCODING 'UTF8' TEMPLATE template0" : '';
-    return ("CREATE DATABASE \"$name\" $charset");
+    return ("CREATE DATABASE \"$name\" ENCODING 'UTF8' TEMPLATE template0");
 }
 
 sub get_rename_column_ddl {
index ddafc16962228a691e0c85c7d7960852eb0e7e74..0cdfa3477251f63a5bfc11db496caec1b90042e4 100644 (file)
@@ -93,8 +93,7 @@ sub new {
     my $dsn = "dbi:SQLite:dbname=$db_name";
 
     my $attrs = {
-        # XXX Should we just enforce this to be always on?
-        sqlite_unicode => Bugzilla->params->{'utf8'},
+        sqlite_unicode => 1,
     };
 
     my $self = $class->db_new({ dsn => $dsn, user => '', 
index bcf17458fe09231d541b9badd87c63ebf932a1b0..ef75d0cf888b7433e824b221e80b4c2624fcfcba 100644 (file)
@@ -125,9 +125,7 @@ sub MessageToMTA {
         # We don't recode headers that happen multiple times.
         next if scalar(@values) > 1;
         if (my $value = $values[0]) {
-            if (Bugzilla->params->{'utf8'} && !utf8::is_utf8($value)) {
-                utf8::decode($value);
-            }
+            utf8::decode($value) unless utf8::is_utf8($value);
 
             # avoid excessive line wrapping done by Encode.
             local $Encode::Encoding{'MIME-Q'}->{'bpl'} = 998;
@@ -187,18 +185,16 @@ sub MessageToMTA {
         my $content_type = $part->content_type || '';
         $content_type =~ /charset=['"](.+)['"]/;
         # If no charset is defined or is the default us-ascii,
-        # then we encode the email to UTF-8 if Bugzilla has utf8 enabled.
+        # then we encode the email to UTF-8.
         # XXX - This is a hack to workaround bug 723944.
         if (!$1 || $1 eq 'us-ascii') {
             my $body = $part->body;
-            if (Bugzilla->params->{'utf8'}) {
-                $part->charset_set('UTF-8');
-                # encoding_set works only with bytes, not with utf8 strings.
-                my $raw = $part->body_raw;
-                if (utf8::is_utf8($raw)) {
-                    utf8::encode($raw);
-                    $part->body_set($raw);
-                }
+            $part->charset_set('UTF-8');
+            # encoding_set works only with bytes, not with utf8 strings.
+            my $raw = $part->body_raw;
+            if (utf8::is_utf8($raw)) {
+                utf8::encode($raw);
+                $part->body_set($raw);
             }
             $part->encoding_set('quoted-printable') if !is_7bit_clean($body);
         }
index 1b6b48205bf12e8626b39e5bdf7feba91a43ea05..6de927b9ad5f4e02e5d3214775de5c412d1daf99 100644 (file)
@@ -752,7 +752,7 @@ sub create {
         # Initialize templates (f.e. by loading plugins like Hook).
         PRE_PROCESS => ["global/variables.none.tmpl"],
 
-        ENCODING => Bugzilla->params->{'utf8'} ? 'UTF-8' : undef,
+        ENCODING => 'UTF-8',
 
         # Functions for processing text within templates in various ways.
         # IMPORTANT!  When adding a filter here that does not override a
@@ -783,15 +783,10 @@ sub create {
             # Strips out control characters excepting whitespace
             strip_control_chars => sub {
                 my ($data) = @_;
-                state $use_utf8 = Bugzilla->params->{'utf8'};
-                # Only run for utf8 to avoid issues with other multibyte encodings 
-                # that may be reassigning meaning to ascii characters.
-                if ($use_utf8) {
-                    $data =~ s/(?![\t\r\n])[[:cntrl:]]//g;
-                }
+                $data =~ s/(?![\t\r\n])[[:cntrl:]]//g;
                 return $data;
             },
-            
+
             # HTML collapses newlines in element attributes to a single space,
             # so form elements which may have whitespace (ie comments) need
             # to be encoded using &#013;
index 84d86b8c6d6bf4752a79a5a8bfe7ad5d45b73213..a8358d4a741d3cb02cb513e75d96d720ab5e302e 100644 (file)
@@ -185,9 +185,7 @@ sub issue_hash_token {
 
     my $token = join('*', @args);
     # Wide characters cause Digest::SHA to die.
-    if (Bugzilla->params->{'utf8'}) {
-        utf8::encode($token) if utf8::is_utf8($token);
-    }
+    utf8::encode($token) if utf8::is_utf8($token);
     $token = hmac_sha256_base64($token, Bugzilla->localconfig->{'site_wide_secret'});
     $token =~ s/\+/-/g;
     $token =~ s/\//_/g;
index 670f5f8f28b1d2350e2a8432fc0c3e4944b8b7d1..f0b38b0b0c67d387b6887b3414b90be41c02f9d9 100644 (file)
@@ -73,36 +73,31 @@ sub html_quote {
     # Obscure '@'.
     $var =~ s/\@/\&#64;/g;
 
-    state $use_utf8 = Bugzilla->params->{'utf8'};
-
-    if ($use_utf8) {
-        # Remove control characters if the encoding is utf8.
-        # Other multibyte encodings may be using this range; so ignore if not utf8.
-        $var =~ s/(?![\t\r\n])[[:cntrl:]]//g;
-
-        # Remove the following characters because they're
-        # influencing BiDi:
-        # --------------------------------------------------------
-        # |Code  |Name                      |UTF-8 representation|
-        # |------|--------------------------|--------------------|
-        # |U+202a|Left-To-Right Embedding   |0xe2 0x80 0xaa      |
-        # |U+202b|Right-To-Left Embedding   |0xe2 0x80 0xab      |
-        # |U+202c|Pop Directional Formatting|0xe2 0x80 0xac      |
-        # |U+202d|Left-To-Right Override    |0xe2 0x80 0xad      |
-        # |U+202e|Right-To-Left Override    |0xe2 0x80 0xae      |
-        # --------------------------------------------------------
-        #
-        # The following are characters influencing BiDi, too, but
-        # they can be spared from filtering because they don't
-        # influence more than one character right or left:
-        # --------------------------------------------------------
-        # |Code  |Name                      |UTF-8 representation|
-        # |------|--------------------------|--------------------|
-        # |U+200e|Left-To-Right Mark        |0xe2 0x80 0x8e      |
-        # |U+200f|Right-To-Left Mark        |0xe2 0x80 0x8f      |
-        # --------------------------------------------------------
-        $var =~ tr/\x{202a}-\x{202e}//d;
-    }
+    # Remove control characters.
+    $var =~ s/(?![\t\r\n])[[:cntrl:]]//g;
+
+    # Remove the following characters because they're
+    # influencing BiDi:
+    # --------------------------------------------------------
+    # |Code  |Name                      |UTF-8 representation|
+    # |------|--------------------------|--------------------|
+    # |U+202a|Left-To-Right Embedding   |0xe2 0x80 0xaa      |
+    # |U+202b|Right-To-Left Embedding   |0xe2 0x80 0xab      |
+    # |U+202c|Pop Directional Formatting|0xe2 0x80 0xac      |
+    # |U+202d|Left-To-Right Override    |0xe2 0x80 0xad      |
+    # |U+202e|Right-To-Left Override    |0xe2 0x80 0xae      |
+    # --------------------------------------------------------
+    #
+    # The following are characters influencing BiDi, too, but
+    # they can be spared from filtering because they don't
+    # influence more than one character right or left:
+    # --------------------------------------------------------
+    # |Code  |Name                      |UTF-8 representation|
+    # |------|--------------------------|--------------------|
+    # |U+200e|Left-To-Right Mark        |0xe2 0x80 0x8e      |
+    # |U+200f|Right-To-Left Mark        |0xe2 0x80 0x8f      |
+    # --------------------------------------------------------
+    $var =~ tr/\x{202a}-\x{202e}//d;
     return $var;
 }
 
@@ -203,8 +198,8 @@ sub email_filter {
 # This originally came from CGI.pm, by Lincoln D. Stein
 sub url_quote {
     my ($toencode) = (@_);
-    utf8::encode($toencode) # The below regex works only on bytes
-        if Bugzilla->params->{'utf8'} && utf8::is_utf8($toencode);
+    # The below regex works only on bytes
+    utf8::encode($toencode) if utf8::is_utf8($toencode);
     $toencode =~ s/([^a-zA-Z0-9_\-.])/uc sprintf("%%%02x",ord($1))/eg;
     return $toencode;
 }
@@ -635,9 +630,7 @@ sub bz_crypt {
     }
 
     # Wide characters cause crypt and Digest to die.
-    if (Bugzilla->params->{'utf8'}) {
-        utf8::encode($password) if utf8::is_utf8($password);
-    }
+    utf8::encode($password) if utf8::is_utf8($password);
 
     my $crypted_password;
     if (!$algorithm) {
@@ -785,9 +778,8 @@ sub display_value {
 }
 
 sub disable_utf8 {
-    if (Bugzilla->params->{'utf8'}) {
-        binmode STDOUT, ':bytes'; # Turn off UTF8 encoding.
-    }
+    # Turn off UTF8 encoding.
+    binmode STDOUT, ':bytes';
 }
 
 use constant UTF8_ACCIDENTAL => qw(shiftjis big5-eten euc-kr euc-jp);
index 2b5c7ec9b2eeb9c0f2c06cc0fb8f4edf4a04ab37..3fa0b65a9b9f53f588e842d9de6037fb05343c32 100644 (file)
@@ -54,7 +54,7 @@ sub create_json_coder {
     # This may seem a little backwards, but what this really means is
     # "don't convert our utf8 into byte strings, just leave it as a
     # utf8 string."
-    $json->utf8(0) if Bugzilla->params->{'utf8'};
+    $json->utf8(0);
     return $json;
 }
 
index 339e428bc3daa5b9465261fdf09639e16d411d9f..b874c51951e4121cfe8a23b510fea146f1e5b19e 100755 (executable)
@@ -173,9 +173,7 @@ sub collect_stats {
           || ThrowCodeError('chart_file_open_fail', {'filename' => $file});
     }
 
-    if (Bugzilla->params->{'utf8'}) {
-        binmode DATA, ':utf8';
-    }
+    binmode DATA, ':utf8';
 
     # Now collect current data.
     my @row = (today());
@@ -234,9 +232,7 @@ sub get_old_data {
     open(DATA, '<', $file)
       || ThrowCodeError('chart_file_open_fail', {'filename' => $file});
 
-    if (Bugzilla->params->{'utf8'}) {
-        binmode DATA, ':utf8';
-    }
+    binmode DATA, ':utf8';
 
     my @data;
     my @columns;
index 3371367008d294961fd9eb503c620f89946ffa64..e7ff00132b2b262cf9321af4dfc5f0048856bacb 100644 (file)
@@ -59,16 +59,6 @@ maintainer
     responsible for maintaining this Bugzilla installation.
     The address need not be that of a valid Bugzilla account.
 
-utf8
-    Use UTF-8 (Unicode) encoding for all text in Bugzilla. Installations where
-    this parameter is set to :paramval:`off` should set it to :paramval:`on` only
-    after the data has been converted from existing legacy character
-    encodings to UTF-8, using the
-    :file:`contrib/recode.pl` script.
-
-    .. note:: If you turn this parameter from :paramval:`off` to :paramval:`on`,
-              you must re-run :file:`checksetup.pl` immediately afterward.
-
 shutdownhtml
     If there is any text in this field, this Bugzilla installation will
     be completely disabled and this text will appear instead of all
index ae4c42bde5f670d51022177baed4cff30caf88d5..70ef26b6c067c5c8d9fad0478bd19d87a08a615c 100755 (executable)
@@ -398,10 +398,7 @@ sub get_text_alternative {
 
 sub _decode_body {
     my ($charset, $body) = @_;
-    if (Bugzilla->params->{'utf8'} && !utf8::is_utf8($body)) {
-        return Encode::decode($charset, $body);
-    }
-    return $body;
+    return utf8::is_utf8($body) ? $body : Encode::decode($charset, $body);
 }
 
 sub remove_leading_blank_lines {
index 129964e99badb8b68d2b24e9ef590a7cf47bb439..a023dd77dfd79b47505d53f018b1133e129c2e8e 100755 (executable)
@@ -191,9 +191,7 @@ foreach my $k (@bug_ids) {
 
     if ($summary ne "" && $cgi->param('showsummary')) {
         # Wide characters cause GraphViz to die.
-        if (Bugzilla->params->{'utf8'}) {
-            utf8::encode($summary) if utf8::is_utf8($summary);
-        }
+        utf8::encode($summary) if utf8::is_utf8($summary);
         $summary = wrap_comment($summary);
         $summary =~ s/([\\\"])/\\$1/g;
         push(@params, qq{label="$k\\n$summary"});
index 6ebef8ea21a993e5333b38ebfe15a3a4ca6e84a5..016a5d1bd3a35d193e3caa9fd64edb18b55c5d2e 100644 (file)
     "The email address of the person who maintains this installation "
     _ " of Bugzilla.",
 
-  utf8 => 
-    "Use UTF-8 (Unicode) encoding for all text in ${terms.Bugzilla}. New"
-    _ " installations should set this to true to avoid character encoding"
-    _ " problems. <strong>Existing databases should set this to true"
-    _ " only after the data has been converted from existing legacy"
-    _ " character encodings to UTF-8, using the <kbd>contrib/recode.pl</kbd>"
-    _ " script</strong>."
-    _ " <p>Note that if you turn this parameter from &quot;off&quot; to"
-    _ " &quot;on&quot;, you must re-run <kbd>checksetup.pl</kbd> immediately"
-    _ " afterward.</p>",
-
   shutdownhtml => 
     "If this field is non-empty, then Bugzilla will be completely"
     _ " disabled and this text will be displayed instead of all the"
index 1d376f874cfd37bfecf582e473c476d133553e8e..10ec0a3c16f29458b92cc141f7a9e08520aeb610 100644 (file)
@@ -8,7 +8,7 @@
 [% PROCESS bug/time.html.tmpl %]
 [% USE Bugzilla %]
 [% cgi = Bugzilla.cgi %]
-<?xml version="1.0" [% IF Param('utf8') %]encoding="UTF-8" [% END %]standalone="yes" ?>
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
 <!DOCTYPE bugzilla [% IF cgi.param('dtd') %][[% PROCESS pages/bugzilla.dtd.tmpl %]][% ELSE %]SYSTEM "[% urlbase FILTER xml %]page.cgi?id=bugzilla.dtd"[% END %]>
 
 <bugzilla version="[% constants.BUGZILLA_VERSION %]"
index 0d183cf56745d8f8ae26849f34dbee4e5bbdf91d..c1b5b0575a9b95217eeab1a3c63a95dbec5a1bfa 100644 (file)
@@ -10,7 +10,7 @@
   # So we cache it here for better performance.
  %]
 [% escaped_urlbase = BLOCK %][% urlbase FILTER xml %][% END %]
-<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- Note: this interface is experimental and under development.
    - We may and probably will make breaking changes to it in the future. -->
 
index 5b3cd03f360bf3187e34658102e0db3116d70c13..f63b175ec86ddefb929d4e0d0a3c1c9f97e3b206 100644 (file)
   <head>
     [% Hook.process("start") %]
     <title>[% title %]</title>
-
-    [% IF Param('utf8') %]
-      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-    [% END %]
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 
     [% IF NOT no_yui %]
       [% SET yui = yui_resolve_deps(yui, yui_deps) %]
index 3a8aa1ada7a18e2ef7cc86fb068cd69196b418f7..a7b7e19ba5d3482bbdb1b2421d919a175e186f5c 100644 (file)
     [% IF param_changed.size > 0 %]
       [% FOREACH param = param_changed %]
         Changed <em>[% param FILTER html %]</em><br>
-        [% IF param == 'utf8' && Param('utf8') %]
-          <strong>You must now re-run <kbd>checksetup.pl</kbd>.</strong><br>
-        [% END %]
       [% END %]
     [% ELSE %]
       No changes made.
index fddbbd7a30d58e939dfdc0252796a57d4b9f2fc1..921977e8cb5393bcb7b52bfabc956c70da87b626 100644 (file)
@@ -8,7 +8,7 @@
 
 [% DEFAULT title = "$terms.Bugzilla $terms.Bugs" %]
 
-<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?>
+<?xml version="1.0" encoding="UTF-8"?>
 <feed xmlns="http://www.w3.org/2005/Atom">
   <title>[% title FILTER xml %]</title>
   <link rel="alternate" type="text/html"
index 1ee216a1ee5ad134754741dfc88170ecfd525068..a64b0bd4659ffd99ad3c9057f948289b99922dcc 100644 (file)
@@ -6,7 +6,7 @@
   # defined by the Mozilla Public License, v. 2.0.
   #%]
 
-<?xml version="1.0"[% IF Param('utf8') %] encoding="UTF-8"[% END %]?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!-- [% template_version %] -->
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"