我在我的可可GUI中有一个字符串,它需要特殊的格式(字体,颜色等)。当然,我使用的是一个属性字符串。为了方便起见,我初始化字符串为RTF:RTFString包含NSASCIIStringEncoding特殊字符?
NSString *inputString = @"This string has special characters";
NSString *rtfString = [NSString stringWithFormat:@"{@"***LENGTHY RTF FORMATTING STRING *** %@", inputString];
NSAttributedString *testString = [[NSAttributedString alloc] initWithRTF:[rtfString dataUsingEncoding:NSUTF8StringEncoding] documentAttributes:nil];
的问题是,在“inputString”可能有特殊字符,这是不正确显示由于UTF8Encoding。它们被替换为其他符号。 é保留为Å©。
所以,现在我这样做:
NSData* intermediateDataString=[inputString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
inputString = [[[NSString alloc] initWithData:intermediateDataString encoding:NSUTF8StringEncoding] autorelease];
这不显示意外字符,但它确实删除所有口音和代替他们离开重音字母 - é留作e。
这是一个改进,因为一切都可以阅读,但它是非常不理想。
想法?
我更喜欢这个想法。我会尝试一下。谢谢! – 2010-08-01 18:49:10
美丽!像魅力一样工作。多么好的主意! – 2010-08-01 19:02:36