diff --git a/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm b/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm
index 33d8a3d1ae8e260e8641339bbdacf94e3a9e737e..7e08a7181a9aeddcd97e1ef284938b54b7a54c26 100644
--- a/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm
+++ b/modules/Bio/EnsEMBL/Utils/IO/GFFSerializer.pm
@@ -173,7 +173,7 @@ sub print_feature {
 #   Catch the remaining keys, containing whatever else the Feature provided
         foreach my $attribute ( keys(%summary)) {
             if (ref $summary{$attribute} eq "ARRAY") {
-                $row .= $attribute."=".join (',',@{$summary{$attribute}}) . ";"
+                $row .= $attribute."=".join (',',map { uri_escape($_,'\t\n\r;=%&,') } @{$summary{$attribute}}) . ";"
             }
             else {
                 if ($summary{$attribute}) { $row .= $attribute."=".uri_escape($summary{$attribute},'\t\n\r;=%&,') . ";"; }