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 までの記号を使用する場合、このテキストも OK です。

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 に答える