diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 24a12162d..e2d193f98 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -5,6 +5,7 @@ - fixed #11741: i18n Asset_Carousel ::carousel slideHeight description - fixed #11742: linktag FilePump macro not xhtml valid - fixed #11744: Default DataForm list template does not contain pagination + - fixed #11683: URL with UTF8 (for äÄöÖüÜß) 7.9.9 - fixed #11693: Shopping cart does not show for visitor user diff --git a/lib/WebGUI/Session/Url.pm b/lib/WebGUI/Session/Url.pm index a963e38f7..628055fa7 100644 --- a/lib/WebGUI/Session/Url.pm +++ b/lib/WebGUI/Session/Url.pm @@ -21,6 +21,7 @@ use URI::Escape; use Scalar::Util qw( weaken ); use WebGUI::International; use WebGUI::Utility; +use Encode; =head1 NAME @@ -323,7 +324,7 @@ sub getRequestedUrl { my $self = shift; return undef unless ($self->session->request); unless ($self->{_requestedUrl}) { - $self->{_requestedUrl} = $self->session->request->uri; + $self->{_requestedUrl} = decode_utf8($self->session->request->uri); my $gateway = $self->session->config->get("gateway"); $self->{_requestedUrl} =~ s/^$gateway([^?]*)\??.*$/$1/; } diff --git a/t/Session/Url.t b/t/Session/Url.t index ee863ce76..a06bbd004 100644 --- a/t/Session/Url.t +++ b/t/Session/Url.t @@ -52,7 +52,7 @@ my @getRefererUrlTests = ( use Test::More; use Test::MockObject::Extends; -plan tests => 86 + scalar(@getRefererUrlTests); +plan tests => 87 + scalar(@getRefererUrlTests); my $session = WebGUI::Test->session; @@ -221,6 +221,13 @@ $session->url->{_requestedUrl} = undef; ##Manually clear cached value $pseudoRequest->uri('/path2/file2?param1=one;param2=two'); is($session->url->getRequestedUrl, 'path2/file2', 'getRequestedUrl, does not return params'); +$session->url->{_requestedUrl} = undef; +my $utf8_url = "Viel Spa\x{00DF}"; +$pseudoRequest->uri($utf8_url); +use Encode; +my $decoded_url = decode_utf8($utf8_url); +is $session->url->getRequestedUrl(), $decoded_url, 'getRequestedUrl returns utf8 decoded data'; + ####################################### # # page