首页 > 其他分享 >Apple开发_字符串与Unicode编码的互转

Apple开发_字符串与Unicode编码的互转

时间:2022-08-27 14:24:25浏览次数:75  
标签:Apple char NSMutableString length 字符串 Unicode 互转 string

// 字符串 转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,char,NSMutableString,length,字符串,Unicode,互转,string
From: https://www.cnblogs.com/CH520/p/16254704.html

相关文章