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

What you posted doesn't show the code that talks to the database.

Please think before posting.

Replies are listed 'Best First'.
Re^4: UTF8 fun and games again
by ultranerds (Hermit) on Oct 17, 2011 at 18:28 UTC
    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" } ]
      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