重音字母和表情符号

Accented letters and emojis

我需要 encode/decode 表情符号,我正在使用此代码

var encodeEmoji: String{
        if let encodeStr = NSString(cString: self.cString(using: .nonLossyASCII)!, encoding: String.Encoding.utf8.rawValue){
            return encodeStr as String
        }
        return self
    }

对于表情符号,一切都很好,但是当我编码重音字母时 (æ, ø, å) 我有这样的东西 \346, \ 370、\345 谁能帮助避免转换重音字母,或者说我做错了什么。提前致谢!

一种方法是对每个字符单独编码,检测表情符号:

let testString = "abcdřšá"

let encoded = testString.unicodeScalars
    .map {
        guard [=10=].isEmoji else { return String([=10=]) }
        let data = String([=10=]).data(using: .nonLossyASCII, allowLossyConversion: true)!
        return String(data: data, encoding: .ascii)!
    }.joined()

print(encoded) // abcdřšá\ud83d\ude03\ud83d\ude03\ud83d\ude03

使用 中的 isEmoji 方法。