2010-04-07 24 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);