Rob Rob - 4 months ago 20
Objective-C Question

NSString : easy way to remove UTF-8 accents from a string?

I want to change a sentence, for example :


Être ou ne pas être. C'était là-bas.


Would become :


Etre ou ne pas etre. C'etait la-bas.


Is there any easy way to do this with NSString ? Or do I have to develop this on my own by checking each char ?

Thanks a lot.

Answer Source
NSString *str = @"Être ou ne pas être. C'était là-bas.";
NSData *data = [str dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
NSString *newStr = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
NSLog(@"%@", newStr);

... or try using NSUTF8StringEncoding instead.

List of encoding types here:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/doc/constant_group/String_Encodings


Just FTR here's a one line way to write this great answer:

yourString = [[NSString alloc]
  initWithData:
    [yourString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]
  encoding:NSASCIIStringEncoding];