我有一个应用程序可以同步用户填充的远程数据库中的数据。似乎人们会从大量不同的操作系统和程序中复制和粘贴垃圾,这会导致不同的隐藏非ASCII值被导入到系统中。从NSString中删除非ASCII字符在objective-c
比如我结束了这一点:
Artist:â â Ioco
这个同步过程中最终得到送回到系统和我的JSON的转换进一步加强的问题,并在不同的地方无效字符会导致我的应用程序崩溃。
如何搜索并清除任何这些无效字符?
我有一个应用程序可以同步用户填充的远程数据库中的数据。似乎人们会从大量不同的操作系统和程序中复制和粘贴垃圾,这会导致不同的隐藏非ASCII值被导入到系统中。从NSString中删除非ASCII字符在objective-c
比如我结束了这一点:
Artist:â â Ioco
这个同步过程中最终得到送回到系统和我的JSON的转换进一步加强的问题,并在不同的地方无效字符会导致我的应用程序崩溃。
如何搜索并清除任何这些无效字符?
虽然我坚信,支持unicode是走正道,这里有一个如何限制一个字符串只包含特定字符(在这种情况下,ASCII)的例子:
NSString *test = @"Olé, señor!";
NSMutableString *asciiCharacters = [NSMutableString string];
for (NSInteger i = 32; i < 127; i++) {
[asciiCharacters appendFormat:@"%c", i];
}
NSCharacterSet *nonAsciiCharacterSet = [[NSCharacterSet characterSetWithCharactersInString:asciiCharacters] invertedSet];
test = [[test componentsSeparatedByCharactersInSet:nonAsciiCharacterSet] componentsJoinedByString:@""];
NSLog(@"%@", test); // Prints @"Ol, seor!"
一言以蔽之:创建一个新的可变字符串,迭代所有字符,检查它是否是ASCII字符,如果是,则将其附加到字符串。 – 2011-06-15 17:15:01
2011年真的没有理由不正确处理unicode(http://www.joelonsoftware.com/articles/Unicode.html)。请记住,真正的人们可以并且确实有姓名,如何塞,穆勒或约恩逊,甚至还有穆罕默德多夫或ძძძძor或陈。 – damian 2011-06-15 17:27:42
这种“废话”来自其他语言的英文信件。你应该尝试找出正确的编码来保存字母。 – vikingosegundo 2011-06-15 17:33:52