objective c - NSString with wrong characters when using UTF-8 -


i data utf-8 encoded xml file, , want display every element in uitableview . want cells have same size , display 2 first text lines data possible tried remove carriage returns.

in cellforrow method changed :

[[mycell textlabel] settext:data]; 

by :

[[mycell textlabel] settext:[self correctdata:data]]; 

here correctdata method :

- (nsstring *) correctdata : (nsstring *) str {     nsmutablestring *res = [nsmutablestring stringwithformat:@""];     for(int = 0 ; < [str length] ; i++)     {         char car = [str characteratindex:i];         if(car != 10 && car != 13)             [res appendstring:[nsstring stringwithformat:@"%c",car]];     }     return res; } 

and correctly removes carriage returns, alters utf-8 chars. example, bit of initial string (str) :

diplômé(e) d'etat

and function becomes :

diplÙmÈ(e) d'etat

what should ? thanks.

nsstring works unichar characters stored on 16bits whereas char 8bits long. converting unichar char alter characters code point above u+00ff.

you can solve issue replacing char unichar , %c %c.

edit: that's not efficient. may better use regular expressions replace newline characters in once:

str = [str stringbyreplacingoccurrencesofstring:@"[\r\n]+"                                      withstring:@""                                         options:nsregularexpressionsearch                                            range:nsmakerange(0, str.length)]; 

Comments

Popular posts from this blog

django - How can I change user group without delete record -

java - Need to add SOAP security token -

java - EclipseLink JPA Object is not a known entity type -