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

Rob picture Rob · Jun 7, 2012 · Viewed 20.6k times · Source

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?

Answer

Luke picture Luke · Jun 7, 2012
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/documentation/foundation/nsstringencoding


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

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