适用于iPhone的Google Translate API - 中文翻译中的UTF8问题

时间:2010-04-20 17:58:59

标签: iphone google-translate

我通过以下方式测试了一个可行的翻译API网址:

http://translate.google.com/translate_a/t?client=t&text=%E5%BB%A3%E5%A0%B4&langpair=zh|zh-CN

它返回正确的结果,如下所示,采用JSON格式:

{ “句子”:[{ “反式”: “广场”, “原稿”: “广场”, “TRANSLIT”: “Guǎngchǎng”}], “SRC”: “ZH-CN”}

但是,当我尝试在XCode中使用此功能时,我遇到了这个问题...... 这是我的代码:

NSData * data;

NSString *urlPath = [NSString stringWithFormat:@"/translate_a/t?client=t&text=%@&langpair=zh|zh-CN",qText];

NSURL *url = [[NSURL alloc] initWithScheme:@"http"
                                      host:@"translate.google.com"
                                      path:urlPath];

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:url];
[request setHTTPMethod:@"GET"];

NSURLResponse *response;
NSError *error;
data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; //Problem's here. It returns nil.
NSLog(result);

最初我猜测它是编码问题,所以我也尝试了其他编码(NSISOLatin1StringEncoding),但我得错了答案:{“句子”:[{“trans”:“ã”,“orig”:“ã”,“ translit“:”Tu¨“},”src“:”zh-CN“}

有谁知道如何解决这个问题?非常感谢你!

1 个答案:

答案 0 :(得分:0)

您是否尝试过检查错误对象?如果发生错误,此调用将只设置错误对象并继续 - 它不会像正常错误那样崩溃/抛出。

在sendSynchronousRequest调用之后尝试这样的事情:

if (error != nil)
{
    NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
    abort();
}

如果发生错误,这应该提供更多详细信息。