【发布时间】:2010-08-01 17:14:26
【问题描述】:
我的 cocoa GUI 中有一个字符串需要特殊格式(字体、颜色等)。当然,我使用的是属性字符串。为方便起见,我将字符串初始化为 RTF:
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。
这是一个改进,因为所有内容都可以读取,但远非理想。
想法?
【问题讨论】:
标签: objective-c cocoa utf-8 ascii rtf