非拉丁字符的iPhone编码

时间:2011-02-16 11:49:42

标签: iphone encoding utf-8 character non-latin

我正在尝试解析GET请求的JSON响应。当人物,拉丁没有问题。

然而,当他们没有拉丁时,消息不正确。我试过希腊而不是“πανος”我得到了“& pi;& alpha;& nu;& omicron;& sigmaf;”

我用来解析响应的代码是:

NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

NSLog(@"response %@", responseString);




// array from the JSON string
NSArray *results = [responseString JSONValue];

当我尝试使用ajax从网站上阅读回复时,一切都很好。尝试使用来自iphone的数据向应用程序服务器发送GET请求时也是如此。因此,当我将数据传输到服务器并从网站上读取时,一切都很好。当我尝试在应用程序中显示相同的数据时,“休斯顿我们遇到了问题”。

任何线索?

编辑:为了避免误解,这不是HTML的问题,我只是指出,对于某些读取,utf-8字符在这里被正确编码并自动编码,例如。 “& pi”将转换为“π”,但客观c似乎不会自行执行此操作

4 个答案:

答案 0 :(得分:0)

查看Cocoanetics NSString + HTML类别和方法stringByReplacingHTMLEntities方法。您可以在以下网址找到它:

https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML/blob/master/Classes/NSString%2BHTML.m

这里有很多HTML实体和相应的unicode字符。

答案 1 :(得分:0)

尝试使用此代码段:

  NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

  NSString *decodedString = [NSString stringWithUTF8String:[responseString cStringUsingEncoding:[NSString defaultCStringEncoding]]];


  NSLog(@"response %@", decodedString);


  // array from the JSON string
  NSArray *results = [decodedString JSONValue];

答案 2 :(得分:0)

我认为存在困惑。

π HTML实体 ,与文本编码无关,如UTF8 / Latin。

阅读wikipedia了解有关...

的详细信息

你需要一个解析器来解码这些实体,就像之前由Chiefly Izzy提到的那样:

NSString+HTML category and method stringByReplacingHTMLEntities

答案 3 :(得分:0)

我遇到了同样的问题,但是我通过更改JSON解析器解决了这个问题。我已经开始使用SBJSONParser了,现在我得到了合适的结果。这是代码片段,我用过

NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];

NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
SBJSON *parser=[[SBJSON alloc]init];
NSArray *JSONData = (NSArray*)[parser objectWithString:returnString error:nil];