2010-04-07 52 views
19

我需要的NSString在Unicode字符轉換成的NSString在ASCII改變所有本地字符: A到A, s到S, o要O, ü到u, 等。 ..的NSString - Unicode碼對應的ASCII碼

最簡單的方法是什麼?

+0

完美的解決方案http://stackoverflow.com/questions/6204718/status-code -0-on-google-geocode-api-from-iphone-sim-but-works-fine-on-web-non/6204970#6204970 恭喜... – Moacir 2015-04-14 13:21:58

回答

41

​​。

您給出的所有示例都按您的要求處理。看起來像沒有明顯類似的字符,如☃,轉到'?'。

+0

就是這樣。謝謝。 – Jacek 2010-04-07 12:38:40

+0

這解決了我的問題http://stackoverflow.com/questions/6204718/status-code-0-on-google-geocode-api-from-iphone-sim-but-works-fine-on-web-non-e/6204970#6204970,謝謝! – quantumpotato 2011-06-01 17:07:01

1

Objective C的NSASCIIEncoding只支持127,你要查找的字符集在ASCII表中超過127。

NSASCIIStringEncoding 嚴格的8位字符的7位ASCII編碼;僅限ASCII值0 ... 127。 適用於Mac OS X v10.0及更高版本。 在NSString.h中聲明。

0
NSData *data = [decode dataUsingEncoding:[NSString defaultCStringEncoding]]; 
decode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
2

肯的回答將取代 「AE」 與 「AE」 和 「SS」 與 「S」,但不會取代œ連寫,ij,FF,音響,佛羅里達州,FFI,ffl第,FT,ST ...

的改進方案是先插入映射的其他線路來處理一切正常:

string = [string stringByReplacingOccurrencesOfString:@"Œ" withString:@"OE"]; 
string = [string stringByReplacingOccurrencesOfString:@"œ" withString:@"oe"]; 
string = [string stringByReplacingOccurrencesOfString:@"Đ" withString:@"D"]; 
string = [string stringByReplacingOccurrencesOfString:@"đ" withString:@"d"]; 
string = [string precomposedStringWithCompatibilityMapping]; 

NSData *data = [string dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *newString = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 
7
NSString *unicode = @"Chào mừng đến với Việt Nam."; 
NSString *standard = [unicode stringByReplacingOccurrencesOfString:@"đ" withString:@"d"]; 
standard = [standard stringByReplacingOccurrencesOfString:@"Đ" withString:@"D"]; 
NSData *decode = [standard dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
NSString *ansi = [[NSString alloc] initWithData:decode encoding:NSASCIIStringEncoding]; 
NSLog(@"ANSI: %@", ansi);