2010-04-07 12 views
19
나는 모든 지역의 문자를 변경 ASCII에있는 NSString에 유니 코드에있는 NSString 변환해야

을 ASCII로. ..있는 NSString 유니 코드는 해당

가장 간단한 방법은 무엇입니까?

+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

답변

41

-[NSString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES].

모든 예제는 원하는대로 처리됩니다. 명백한 아날로그가없는 문자 (예 : ¢)가 '?'로 이동합니다.

+0

그게 전부입니다. 고맙습니다. – Jacek

+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

1

Objective C의 NSASCIIEncoding은 upto 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"와 "S"와 "ß"와 "æ"를 대체 할 것이다, 그러나 œ 합자를 대체하지 않습니다, ij, FF, 파이, 플로리다, FFI, FFL, 피트, 성

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);