NSISOLatin1StringEncoding неправильный, например € не может кодировать.
XML-файл:
<?xml version="1.0" encoding="ISO-8859-15"?>
...
Xcode:
NSString *xmlFileAsString = nil; //read xml file
NSStringEncoding iso88599 = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatin9);
NSData *data = [xmlFileAsString dataUsingEncoding:iso88599 allowLossyConversion:YES];
xmlDocPtr doc = xmlReadMemory([data bytes], (int)[data length], NULL, NULL, XML_PARSE_COMPACT | XML_PARSE_NOBLANKS);
if (doc == NULL) {
...
получить строку из xml: (например, USAdditions.m)
+ (NSString *)stringWithXmlString:(xmlChar *)str free:(BOOL)freeOriginal {
if (!str) return nil;
NSString *string = [NSString stringWithCString:(char*)str encoding:NSUTF8StringEncoding];
if (freeOriginal)
xmlFree(str);
return string;
}