2013-12-18 80 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