fix uri_for()'s handling of multibyte chars (Daisuke Murase)
[catagits/Catalyst-Runtime.git] / lib / Catalyst.pm
index edca221..bfe50dd 100644 (file)
@@ -978,7 +978,7 @@ sub uri_for {
           $val = '' unless defined $val;
           (map {
               $_ = "$_";
-              utf8::encode( $_ );
+              utf8::encode( $_ ) if utf8::is_utf8($_);
               # using the URI::Escape pattern here so utf8 chars survive
               s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go;
               s/ /+/g;
@@ -1432,6 +1432,7 @@ sub finalize_headers {
             }
         }
         else {
+            # everything should be bytes at this point, but just in case
             $c->response->content_length( bytes::length( $c->response->body ) );
         }
     }