从NSString到iOS中的转义字符

时间:2013-12-18 12:46:05

标签: ios objective-c string encoding

我不确定我是否提出了正确的问题,如果我错了请纠正我,但我到处搜索,我找不到答案来帮助我解决以下问题:

我有一个NSString,内容如下:“BjörnBr.Björnsson”

我需要得到以下表格:“Bj \ u00f6rn Br.Bj \ u00f6rnsson”。

到目前为止,我已经尝试了所有与stackoverflow相关的内容。如果有人知道如何从ö类型的字符到达\ u00f6那将是非常棒的。

我试过了:

        NSString *name = @"Björn Br. Björnsson";

        NSString* string = [NSString stringWithCString:[name cStringUsingEncoding: NSUTF8StringEncoding] encoding:NSNonLossyASCIIStringEncoding];

      NSMutableString *string = [[NSMutableString alloc] initWithString:name];
      const char *encoded = [string cStringUsingEncoding:NSASCIIStringEncoding];

        NSData* nsData = [name dataUsingEncoding:NSUTF8StringEncoding];
        const char* data = [nsData bytes];
        NSUInteger len = nsData.length;
        NSMutableString* hex = [NSMutableString string];
        for(int i = 0; i < len; ++i)[hex appendFormat:@"%02X", data[i]];

        const char * encodedStringName = [crewmemName cStringUsingEncoding:NSISOLatin1StringEncoding];

和其他许多..

提前致谢。

2 个答案:

答案 0 :(得分:0)

        NSString *name = @"Björn Br. Björnsson";

name =[name stringByReplacingOccurancesOfString:@"ö" withString:@"\u00f6"];

你可能不得不逃避反斜杠。只需键入\\\而不是\。但不确定。

答案 1 :(得分:0)

您可以在NSString上创建一个类别并调用此方法,这将按您想要的方式进行编码

@implementation NSString (URLEncoding)

- (NSString *) stringByUrlEncoding{
    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,  (CFStringRef)self,  NULL,  (CFStringRef)@"!*'();:@&;=+$,/?%#[]",  kCFStringEncodingUTF8));
}

@end