我有简单的问题,但找不到答案:
NSString *polishLetters = @"ąęćźż";
//How to get NSString *correctString = @"aeczz";
所以它是关于字符串编码的。怎么做?
答案 0 :(得分:3)
NSString *polishLetters = @"ąęćźż";
NSMutableString *correctString = [polishLetters mutableCopy];
CFStringTransform((__bridge CFMutableStringRef)correctString, NULL, kCFStringTransformStripCombiningMarks, NO);
NSLog(@"%@", correctString);
// Output: aeczz
这不是关于“字符串编码”。 ą
是Unicode U + 0105(带OGONEK的LATIN SMALL LETTER)和Unicode数据库
http://www.unicode.org/Public/6.2.0/ucd/UnicodeData.txt定义了属性
那个角色为
0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104
字段#6(0061 0328
)是分解到a
(U + 0061)和“COMBINING OGONEK”(U + 328)。上面的字符串转换会删除组合标记,只留下a
。