2013-12-18 51 views
0

我不确定我是否在问正确的问题,如果我错了,请纠正我,但我已经到处搜索,找不到答案来帮助我以下问题:从NSString到iOS中逃脱的字符

我有以下内容的NSString:“比约恩溴BJÖRNSSON”

,我需要得到它的形式如下:“BJ \ u00f6rn溴BJ \ u00f6rnsson。”

我已经尝试了所有我发现到目前为止相关的stackoverflow。如果任何人有任何想法如何从ö类型的角色获得,那就太棒了。

我曾尝试:

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

和许多其他..

在此先感谢。

+0

你想这样的事情http://stackoverflow.com/questions/20094023/how-to -send-symbol-in-xml-body-to-server/20094309#20094309 –

+0

为什么你需要那个输出? - 如果你的意图是创建JSON数据,那么使用'NSJSONSerialization'而不是使用字符编码进行黑客攻击等。 –

回答

0

您可以在NSString创建类别和调用这个方法,这将编码到你想要的方式

@implementation NSString (URLEncoding) 

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

@end 
+0

'\ u00f6'是*不*百分号转义... –

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

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

您可能必须避开反斜杠。只需输入\\\而不是\。但不确定。

+0

我不能那样做。我还有很多其他问题。不能全部用手拿走,我甚至都不知道应用程序存在期间会出现的所有字符。 – CarmenA

+0

在这种情况下,你应该与@Anoop Vaidya的回答 – dehlen