NSString中的波兰语字母

时间:2014-02-17 14:01:35

标签: objective-c character-encoding nsstring

我有简单的问题,但找不到答案:

NSString *polishLetters = @"ąęćźż"; 
//How to get NSString *correctString = @"aeczz";

所以它是关于字符串编码的。怎么做?

1 个答案:

答案 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