2

宿題をしましたが、質問に対する答えが見つかりませんでした。

translate.google.com/translate_a URL を使用して、単一の単語をスウェーデン語から英語に翻訳しようとしています。私はobjective-cでこれをやっています。

以下に例を示します。

word = @"hus"; // result should be "house"

urlPath = [NSString stringWithFormat:@"/translate_a/t?client=t&text=%@&langpair=sv|en", word];
url = [[NSURL alloc] initWithScheme:@"http" host:@"translate.google.com" path:urlPath];
NSLog(@"%@\n\n", url);
request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
[request setHTTPMethod:@"GET"];
myData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
result = [[NSString alloc] initWithData:myData encoding: NSASCIIStringEncoding];
NSLog(@"%@\n\n", result);
self.viewController.textViewGood.text = result;

NSLog から次の URL が得られます:
http://translate.google.com/translate_a/t?client=t&text=hus&langpair=sv%7Cen

NSLog にも正しい結果が表示されます。

2013-03-01 00:07:14.681 testGoogTrans[941:11303] [[["家"、"家"、""、""]]

等..

ブラウザで前に示した URL を呼び出すと、同じ結果のファイルが内部に取得されます。

したがって、これはアプリとブラウザの両方で正常に機能しています。

今、特別な文字を持つ単語のみを変更することによって:

word = @"tåg"; // result should be "train"

残りは同じままですが、奇妙な異なる結果が得られます。

コンソールに出力された URL:

http://translate.google.com/translate_a/t?client=t&text=t%C3%A5g&langpair=sv%7Cen正しくエスケープされているようです。

ブラウザでこの URL を呼び出すと、次の内容のファイルが取得されます。

[[["trains","tåg","",""]],[["nom",["TRAIN","MARCH","ROPE","MARCHING","EXPEDITION","PROCESSION"]

など...これは私が期待するものです。

代わりに、アプリでは、コンソールに表示される結果は次のとおりです。

[[["t\u00C3 \u00A5 g","t\u00C3\u00A5g","",""]],,"sv",,[["t\u00C3",[5],1,0,998, 0,1,0]

等...

URL は正しくフォーマットされていると思いますが、アプリ内から別の回答が得られる理由がわかりません。

誰かがこれについて何か知っているか、それを解決する方向に私を置くことができますか?

前もって感謝します

4

1 に答える 1

0

私はこの行が原因だと思います:

result = [[NSString alloc] initWithData:myData encoding: NSASCIIStringEncoding];

そして、次のようになります。

result = [[NSString alloc] initWithData:myData encoding: NSUTF8StringEncoding];

LinuxのChromeでURLを試してみると、次のようなファイルがダウンロードされますt

$ file t
t: UTF-8 Unicode text, with very long lines, with no line terminators
于 2013-03-01T08:57:33.113 に答える