X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=lib%2FCatalyst.pm;h=8bdad8823439843f872f1c96d141a81579b71b0c;hp=82c753454ba4b6e2a1d8e1b9c3e95ee62f44d3c9;hb=58b80ff1398f28fcf955eedbfc79e91628bfa491;hpb=f4d2c44500a68a7812dc288b15807e404935967f diff --git a/lib/Catalyst.pm b/lib/Catalyst.pm index 82c7534..8bdad88 100644 --- a/lib/Catalyst.pm +++ b/lib/Catalyst.pm @@ -1634,8 +1634,10 @@ sub uri_for { # remove and save fragment if there is one my $fragment; - if ($args =~ s/(#.+)$//) { - $fragment = $1; + if ($args =~ s/#(.+)$//) { + $fragment = encode_utf8($1); + $fragment =~ s/([^A-Za-z0-9\-_.!~*'() ])/$URI::Escape::escapes{$1}/go; + $fragment =~ s/ /+/g; } if (my @keys = keys %$params) { @@ -1668,7 +1670,7 @@ sub uri_for { $args =~ s/([^$URI::uric])/$URI::Escape::escapes{$1}/go; # re-attach fragment on the end of everything after adding params - $query .= $fragment if $fragment; + $args .= "#$fragment" if $fragment; my $res = bless(\"${base}${args}${query}", $class); $res;