【问题标题】:Wrong encoding when getting response from Google's translate API?从 Google 的翻译 API 获得响应时编码错误?
【发布时间】:2010-11-16 13:19:00
【问题描述】:

我正在使用谷歌的翻译 API 来翻译 iPhone SDK 中的一些文本。我使用的网址是http://ajax.googleapis.com/ajax/services/language/translate?v=1.0

一切正常,除了在某些语言中,例如波兰语,返回的字符串有时会有奇怪的东西,比如 \u0026 作为字符串的一部分。它会显示为“你好你好”。为什么是这样?我获取结果的方式如下:

    NSData *returnData = [NSURLConnection sendSynchronousRequest: req returningResponse: response error: error];
    NSString *new = [[NSString alloc] initWithData:responseData encoding: NSUTF8StringEncoding];

编码不正确?这就是新字符串看起来不正确的原因吗?我在他的谷歌翻译网页中尝试了相同的文本,它得到了正确的翻译。


更新

如果你只是去这个URL,你会看到特殊字符。如何在我的应用程序中正确表示这些字符?使用上面两行代码不会正确编码。

【问题讨论】:

    标签: iphone internationalization


    【解决方案1】:

    有趣的是,Unicode 字符代码 0026 恰好是与号字符,它也是 URL 请求中的参数分隔符。这让我想知道“req”字符串而不是编码是否没有发生任何事情。

    可能想看看对这个 SO 问题 Iphone SDk : Problem with ampersand in the URL string 的回复,看看它是否适用于您的情况。

    【讨论】:

      【解决方案2】:

      这个例子看起来是正确的:

      \u0026quot;liberation\u0026quot; and \u0026quot;exit application\u0026quot;
      

      我猜是jsonEncode(htmlEncode("liberation" and "exit application"))

      如果你有一个合适的 json 库,那么 translateText 应该是:..."liberation" and "exit application"... 然后你只需要通过一个 html 解码器来传递它。

      \uXXXX 转义只是 unicode 十六进制转义,应该由 json 解析器处理。

      【讨论】:

        【解决方案3】:

        响应是一个 JSON 字符串(阅读 JSON here)。尝试对结果字符串使用 JSON 解析器,然后从中检索“responseData”元素。例如,使用this framework,您的代码将如下所示:

        // Your original code
        NSData *returnData = [NSURLConnection sendSynchronousRequest: req returningResponse: response error: error];
        NSString *jsonResponse = [[NSString alloc] initWithData:responseData encoding: NSUTF8StringEncoding];
        // JSON parsing
        SBJsonParser *parser = [SBJsonParser new];
        id jsonObject = [parser objectWithString:jsonResponse];
        // the result supports key-value coding
        NSString* translatedValue = [jsonObject valueForKey:@"responseData"];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-17
          相关资源
          最近更新 更多