我有一個應用程序可以同步用戶填充的遠程數據庫中的數據。似乎人們會從大量不同的操作系統和程序中複製和粘貼垃圾,這會導致不同的隱藏非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