#!/usr/bin/perl use strict; use warnings; use URI::Escape; use utf8; no utf8; sub say { print @_, "\n" } sub dumphex { my $l = shift; map {sprintf("\\x%x", ord) } split //,$l } my $DEBUG = 0; my $uri; my %testcase = ( 'latin1' => '%C4%D6%DC%E4%F6%FC%DF', 'utf8' => '%C3%84%C3%96%C3%9C%C3%A4%C3%B6%C3%BC%C3%9F' ); sub enc_utf8_to_latin1 { no utf8; my $uri = shift; $uri = uri_unescape($uri); $DEBUG && say $uri; $DEBUG && say dumphex $uri; utf8::decode($uri); $DEBUG && say dumphex $uri; $uri = uri_escape($uri); $DEBUG && say $uri; return $uri; } # ÄÖÜäöüß als UTF-8 URL encoded $uri = $testcase{'utf8'} ); say $uri, " = ÄÖÜäöüß als UTF-8 URL encoded"; say enc_utf8_to_latin1($uri), ' = UTF-8 -> Latin1 dekodiert'; say; # ÄÖÜäöüß ISO-8859-1 URL encoded $uri = $testcase{'latin1'} ); say $uri, ' = ÄÖÜäöüß ISO-8859-1 URL encoded'; say enc_utf8_to_latin1($uri), ' = Latin1 -> Latin1 dekodiert';