Objective c NSMutableString和(字符)编码问题:在ü的情况下获取\U00fc;
我正在从coreData中提取实体,并将fetchrequest的结果保存到NSMutableString中,以用于文本到语音转换Objective c NSMutableString和(字符)编码问题:在ü的情况下获取\U00fc;,objective-c,ios,encoding,character-encoding,nsmutablestring,Objective C,Ios,Encoding,Character Encoding,Nsmutablestring,我正在从coreData中提取实体,并将fetchrequest的结果保存到NSMutableString中,以用于文本到语音转换 self.ttsInboxCards = [[NSMutableString alloc] initWithString:@""]; [self.ttsInboxCards appendString:[[entitySetsCards valueForKey:@"cardTitle"] description]]; 在NSLog中,我得到以下值: F\U00f
self.ttsInboxCards = [[NSMutableString alloc] initWithString:@""];
[self.ttsInboxCards appendString:[[entitySetsCards valueForKey:@"cardTitle"] description]];
在NSLog中,我得到以下值:
F\U00fcr | schl\U00e4ge | zuh\U00f6ren
应该是:
Für | schläge | zuhören
我尝试了很多方法来获得正确的编码,例如:
stringWithUTF8String:
诸如此类,但没有任何效果
如何防止此问题?
编辑1:
我从coreData获取的值如下:NSFetchRequest*fetchRequest=[[[NSFetchRequest alloc]init]autorelease]
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntitySetsCardsInbox" inManagedObjectContext:self.managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *inboxPred = [NSPredicate predicateWithFormat:@"archived == 0 AND cardId != 0"];
[fetchRequest setPredicate:inboxPred];
NSSortDescriptor *sortDescriptor2 = [[[NSSortDescriptor alloc] initWithKey:sortString ascending:sortAsc selector:@selector(localizedCaseInsensitiveCompare:)] autorelease];
NSArray *sortDescriptors = [[[NSArray alloc] initWithObjects:sortDescriptor2, nil] autorelease];
[fetchRequest setSortDescriptors:sortDescriptors];
NSError *error = nil;
NSArray *cardTitles = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
[self.ttsInboxCards appendString:[[cardTitles valueForKey:@"cardTitle"] description]];
TextToSpeech
if (isSpeaking) {
[vocalizer cancel];
isSpeaking = NO;
}
else {
isSpeaking = YES;
vocalizer = [[SKVocalizer alloc] initWithLanguage:@"de_DE" delegate:self];
[vocalizer speakString:tmp];
}
用小一点的大写字母
U
,试试看。我写道:
cardTitles是一个数组。因此,调用-valueForKey:on会产生一个
通过在每个元素上调用-valueForKey:@“cardTitle”构建的数组。
然后,您需要该数组的描述。很有可能
对其内容进行格式化
他写道:
componentsJoinedByString:通过编码工作并解决了问题。
现在,我必须正确地拆分它们,这样我就可以干净地使用它来
文本到语音。你能回答这个问题吗?这样我就可以做标记了
问题已回答,其他人可以更快地找到它
我不是自己设置上限的,我是在控制台输出中获取它们的。无论如何,你应该在某个地方设置这些值,对吗?在那里更改值并重试。我从CoreData获取此值。在CoreData中,文本被正确保存。我在保存:
Für|schl|ge|zuhören
。但在NSLog中,这是错误的。你难住我了?我和乌芬一点关系都没有,明白吗。我来看看。cardTitle属性的类型是什么?如果它是一个字符串,为什么要对其调用-description
?你可以只使用字符串本身。它是字符串。如果我删除了说明
,那么我会得到一个NSInvalidArgumentException',原因:'-[\uu NSArrayI length]:等等<代码>卡片标题是一个数组。因此,在其上调用-valueForKey:
将生成一个数组,该数组是通过在每个元素上调用-valueForKey:@“cardTitle”
构建的。然后,您需要该数组的描述。它很可能对其内容进行格式化。你用这个表情到底想达到什么目的?你把我推向了正确的方向<代码>组件通过字符串连接:通过编码工作并解决了问题。现在我必须正确地拆分它们,以便我可以干净地使用它进行文本到语音转换。你能用这个回答吗?这样我就可以把这个问题标记为已回答,其他人就可以更快地找到它。非常感谢。