Search code examples
iosiphoneios7nsdata

encode string in utf-8 and saev in another string in encoded format


one,

I am getting string like this

"User_Name" = "\U0639\U0644\U0649 \U0639\U0628\U064a\U062f"; and when store in string then it show على عبيد

Now I want to convert in and opposite manner like

على عبيد -------->"\U0639\U0644\U0649 \U0639\U0628\U064a\U062f"

I have use this code

  NSData *data=[NSData dataWithBytes:[y_dict[key] UTF8String] length:strlen([y_dict[key]UTF8String])];
NSString* newStr = [[NSString alloc] initWithData:data
                                          encoding:NSUTF8StringEncoding];
NSLog(@"%@",newStr);

But it is not working.

How can I fix that issue?


Solution

  • Not sure why you want it, but here you are:

    NSData *utf8 = [string dataUsingEncoding:NSUTF8StringEncoding];
    NSMutableString *newStr = [[NSMutableString alloc] initWithCapacity:[utf8 length] * 6];
    const uint8_t *bytes = [utf8 bytes];
    for (NSUInteger i = 0; i < [utf8 length]; i++) {
        [newStr appendFormat:@"\\U%04x", (unsigned)bytes[i]];
    }