Apple开发_字符串与Unicode编码的互转
作者:互联网
// 字符串 转Unicode
- (NSString *)utf8ToUnicode:(NSString *)string {
NSUInteger length = [string length];
NSMutableString *str = [NSMutableString stringWithCapacity:0];
for (int i = 0; i < length; i++) {
NSMutableString *s = [NSMutableString stringWithCapacity:0];
unichar _char = [string characterAtIndex:i];
// 判断是否为英文和数字
if (_char <= '9' && _char >='0') {
[s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
}
else if(_char >='a' && _char <= 'z') {
[s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
}
else if(_char >='A' && _char <= 'Z') {
[s appendFormat:@"%@", [string substringWithRange:NSMakeRange(i, 1)]];
}
else {
// 中文和字符
[s appendFormat:@"\\u%x", [string characterAtIndex:i]];
// 不足位数补0 否则解码不成功
if(s.length == 4) {
[s insertString:@"00" atIndex:2];
}
else if (s.length == 5) {
[s insertString:@"0" atIndex:2];
}
}
[str appendFormat:@"%@", s];
}
return str;
}
// Unicode 转字符串
- (NSString *)replaceUnicode:(NSString *)unicodeStr {
NSString *tempStr1 = [unicodeStr stringByReplacingOccurrencesOfString:@"\\u" withString:@"\\U"];
NSString *tempStr2 = [tempStr1 stringByReplacingOccurrencesOfString:@"\"" withString:@"\""];
NSString *tempStr3 = [[@"\"" stringByAppendingString:tempStr2] stringByAppendingString:@"\""];
NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
NSString *returnStr = [NSPropertyListSerialization propertyListFromData:tempData
mutabilityOption:NSPropertyListImmutable
format:NULL
errorDescription:NULL];
return [returnStr stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\n"];
}
NSString *unicode = [self utf8ToUnicode:@"标签:Apple,stringWithCapacity,char,NSMutableString,length,Unicode,互转,string
来源: https://www.cnblogs.com/CH520/p/16254704.html