2010-11-04 3 views

Répondre

4

Il est JSON unicode et le codage HTML.

Je vous suggère d'obtenir SuperObject pour décoder JSON: http://code.google.com/p/superobject/source/browse/#svn/trunk

uses msxml, HTTPapp, superobject; 
var 
    xml: IXMLHTTPRequest; 
begin 
    xml := CoXMLHTTP.Create; 
    xml.open('GET', 'http://www.googleapis.com/language/translate/v2? key=YOURAPIKEYHERE&q=The%20clock&source=en&target=fr', False, EmptyParam, EmptyParam); 
    xml.send(''); 
    Caption := HTMLDecode(SO(xml.responseText) ['data.translations[0].translatedText'].AsString); 
end; 
+0

Cela fonctionne bien :) Je ne connaissais même pas cette bibliothèque. Je vous remercie –

2

Vous pouvez les décoder en utilisant la fonction suivante:

function unescapeUTF8EscapeSeq($str) { 
    return preg_replace_callback("/\\\u([0-9a-f]{4})/i", 
     create_function('$matches', 
      'return html_entity_decode(\'&#x\'.$matches[1].\';\', ENT_QUOTES, \'UTF-8\');' 
     ), $str); 
} 

Si vous le souhaitez, vous pouvez l'essayer here

+0

Merci pour la suggestion, mais cela fonctionne doens't tout le temps. L'API envoie le code: Unicode (comme "\ u0026" ou "\ u0035" et ainsi de suite) et HTML (tag est un code ASCII comme "# 39" ou une balise HTML comme "lt" ou "gt" (qui représente < and >)). –

Questions connexes