http://www.perlmonks.org?node_id=931991


in reply to Re^3: UTF8 fun and games again
in thread UTF8 fun and games again

Hi,

I can't post that code, as its all over the place (part of the API for the database in the script I'm using). I know that code works fine normally, as I've used UTF8 charachters loads). The problem has to be something to do with this code.
If I do:
my $string = Do_Translate("en","fr",'are you'); use Data::Dumper; print Dumper($string,'êtes-vous');


I see:

$VAR1 = 'êtes-vous'; $VAR2 = "\x{ad25}s-vous";


Argh its driving me up the wall!

BTW, here is the actual JSON data thats getting passed back:

'translations' => [ { 'translatedText' => "\x{c3 +}\x{aa}tes-vous" } ]

Replies are listed 'Best First'.
Re^5: UTF8 fun and games again
by ultranerds (Hermit) on Oct 17, 2011 at 18:37 UTC
    Ok, for anyone interested - its cos the JSON module needed to explicitly use the utf8 functions JSON->new->utf8 , and then also decode(). I've changed it to this, and it works perfectly now <G>
    sub Do_Translate { my ($from,$to,$string) = @_; my $url = "https://www.googleapis.com/language/translate/v2?key=$k +ey&q=$string&source=$from&target=$to"; # print "getting URL: $url \n"; my $ua = LWP::UserAgent->new(); my $body = $ua->get($url); my $json = JSON->new->utf8; my $value = $json->decode( $body->decoded_content ); print "GOT: $value->{data}->{translations}[0]->{translatedText} \n +"; return utf8($value->{data}->{translations}[0]->{translatedText})-> +latin1; }

      Thanks for sharing your solution!

      Anne