iOS Unicode編碼/解碼

2022-11-01 增加Swift版

  public extension String {
    
    /// 編碼類(lèi)型
    enum Encode {
        case unicode
    }
    
    /// 字符串編碼
    /// - Parameter using: 編碼類(lèi)型
    func encode(_ using: Encode) -> String? {
        switch using {
            case .unicode: return utf16.map({ String(format:"\\U%04x", $0) }).joined()
        }
        return nil
    }

    /// 字符串解碼
    /// - Parameter using: 編碼類(lèi)型
    func decode(_ using: Encode) -> String? {
        switch using {
            case .unicode:
                let text = "\"" + replacingOccurrences(of: "\\u", with: "\\U") + "\""
                if let date = text.data(using: .utf8) {
                    do {
                        let result = try PropertyListSerialization.propertyList(
                            from: date,
                            options: .mutableContainers,
                            format: nil
                        )
                        return result as? String
                    } catch {
                        print(error)
                    }
                }
        }
        return nil
    }

  }



//編碼 (該方法編碼了所有內(nèi)容,包括字母和數(shù)字)
- (NSString *)encodeUnicode {
    
    if (MONull(self)) {
        return nil;
    }
    
    NSMutableString *string = [[NSMutableString alloc] init];
    
    for (int i = 0; i < self.length; i++) {

        unichar _char = [self characterAtIndex:i];

        //不足4為左邊補(bǔ)0,避免解碼錯(cuò)誤
        NSString *str = [NSString stringWithFormat:@"%04x", _char];
        
        [string appendFormat:@"\\u%@", str];
    }
    
    return string;
}

//解碼
- (NSString *)decodeUnicode {
    
    if (MONull(self)) {
        return nil;
    }
    
    const char *charString = self.UTF8String;
    
    NSData *data = [NSData dataWithBytes:charString length:strlen(charString)];
    
    NSString *string = [[NSString alloc] initWithData:data encoding:NSNonLossyASCIIStringEncoding];
    
    return string;
    
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容