问题描述
|
我有一个应用程序,用于同步用户填充的远程数据库中的数据。似乎人们从大量不同的OS和程序中复制并粘贴废话,这可能导致将不同的隐藏非ASCII值导入到系统中。
例如,我最终得到以下结果:
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!\"