my %hash = ( test => 'ÄÖÜß' ); my $encoding = 'utf8'; use JSON; package JSON; sub set_encoding { my $self = shift; my $encoding = shift; return eval "\$self->can($encoding) && \$self->$encoding"; } 1; my $json = JSON->new; $json->set_encoding($encoding) or warn "unknown encoding: $encoding"; print $json->encode(\%hash); print "\n"; $encoding = 'latin1'; $json->set_encoding($encoding) or warn "unknown encoding: $encoding"; print $json->encode(\%hash); print "\n"; $encoding = 'deutsch1968'; $json->set_encoding($encoding) or warn "unknown encoding: $encoding"; print $json->encode(\%hash);