【问题标题】:How to convert russian text from NSData bytes?如何从 NSData 字节转换俄语文本?
【发布时间】:2012-06-03 19:06:22
【问题描述】:

我有问题。如何从 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

【问题讨论】:

    标签: html character-encoding nsstring char nsdata


    【解决方案1】:

    替换这个

    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];
    

    然后你看,一切正常

    【讨论】:

      猜你喜欢
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 2014-06-05
      • 2010-10-17
      相关资源
      最近更新 更多