0

我有个问题。如何从 NSData 转换俄语文本?

NSURL *url = [NSURL URLWithString:@"http://pda.somesite"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setAllowCompressedResponse:YES];
[request startSynchronous];
NSLog(@"response %@",[request responseString]);

响应(空)

NSLog(@"Length %i", [[request responseData] length]);

长度 11733

char * dataChar = [[request responseData] bytes];
NSLog(@"%s",dataChar);

//这里我有拉丁文本,但是俄罗斯的符号是这样的 –ñ–∏–≤–æ–µ –æ–±—â–µ–Ω–∏–µ —Å —Ä–µ–∞–ª—å –Ω—ã–º–∏ –ª—é–¥—å–º–∏ —Å–æ –≤—Å–µ–≥–æ –º–∏—Ä–∞!

NSData * newData = [NSData dataWithBytes:dataChar length:127];

取前 127 个字符。如果这里取超过 127 结果为 Null!!为什么?我在 127 之后没有特殊符号。如果我从 127 到 255 取符号,这个文本也可以。

NSString * data = [[NSString alloc] initWithUTF8String:[newData bytes]];

俄罗斯符号看起来不错,但我有 127 个字符长的字符串

 NSString * str = [NSString stringWithUTF8String:dataChar];//str -> (null)
 NSString * str127 = [NSString stringWithUTF8String:[newData bytes]];//OK but 127 characters
4

1 回答 1

0

替换这个

char * dataChar = [[request responseData] bytes];
NSLog(@"%s",dataChar);

有了这个

NSString *message = [NSString stringWithCString:[[request responseData] bytes] encoding:NSUTF8StringEncoding];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:message delegate:nil cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alert show];

然后你看,一切正常

于 2012-06-19T09:04:45.777 回答