Yogendra Patel
Yogendra Patel

Reputation: 833

How to Encode ' ï ' letter into unicode ' \u00EF ' in objective-c?

In my app I have to encode a string for Emoji using below code:

NSData *data = [StrToEncode dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSString *text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

Using above code when I encode ï then get result \357 but I want Unicode \u00EF.

Entered string:-

StrToEncode = "This ïs â ball"

Current output:-

text = "This \357s \342 ball"

Required output:-

text = "This \u00EFs \u00E2 ball"

Upvotes: 0

Views: 256

Answers (1)

lazyTank
lazyTank

Reputation: 2153

Use NSUTF8StringEncoding instead of NSNonLossyASCIIStringEncoding

NSData *data = [StrToEncode dataUsingEncoding:NSUTF8StringEncoding];
NSString *text = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

Updated:unicode str printing

NSString * a = @"This ïs â ball";
NSMutableString * finalStr = [[NSMutableString alloc] initWithString:@""];
for (int i=0; i<a.length; i++) {
    unichar ch = [a characterAtIndex:i];
    int numVal = (int)ch;

    if (numVal>'z') {
        [finalStr appendString:[NSString stringWithFormat:@"\\u%@",[[NSString stringWithFormat:@"%04x", ch] uppercaseString]]];
    }else{
        [finalStr appendString:[NSString stringWithFormat:@"%c", ch] ];
    }


}
NSLog(@"finalStr %@",finalStr);

Upvotes: 1

Related Questions