Swift 将 UTF16 转换为 UTF8 并返回

标签 swift utf-8 utf-16 string-conversion

我正在 Swift 中构建一个应用程序,并使用 Backendless 作为我的后端。结果他们的数据库是UTF8,因此如果不先转换字符串我就无法保存表情符号。 我似乎找不到正确的方法来将其转换为 UTF8。我试过这个:

let encoding = processedText.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)

但经过此操作后,表情符号看起来像这样: %F0%9F%99%84%F0%9F%98%80%F0%9F%98%92%F0%9F%98%89%F0%9F%98%B6%F0%9F%98%B6%F0 %9F%98%80%F0%9F%99%81

我尝试过这个: 类 func stringToUTF8String (string: String) -> String? {

    let encodedData = string.dataUsingEncoding(NSUTF8StringEncoding)!
    let attributedOptions = [NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType]
    do{
    let attributedString = try NSAttributedString(data: encodedData, options: attributedOptions, documentAttributes: nil)
    return attributedString.string
    }catch _ {
    }

    return nil
}

表情符号如下所示: 🤔🤔👅ðŸ™ðŸ~‚ðŸ~ðŸ~ŽðŸ~‰ðŸ~…ðŸ~‰

有人有什么建议吗?谢谢

最佳答案

首先,使用您使用的 utf8 编码从 NSData 创建一个 String

String(data: theData, encoding: NSUTF8StringEncoding)

其次,swift String 已经符合 unicode 标准。您不必转换它们,因为它们已经这样做了。您可以访问不同的编码及其各自的属性,例如String.utf8String.utf16 等等。

第三,要让 NSAttributedString 正确地对数据中的字符串进行 utf8 编码,您必须将 NSCharacterEncodingDocumentAttribute 键添加到 attributedOptions 字典,其值为 NSUTF8StringEncoding .

最后的注释,我不知道这是否是一个部分方法,但属性字符串不应该仅仅用于编码字符串。


这是 NSAttributedString 以某种格式编码数据,返回乱码。 enter image description here

这里 NSAttributedString 将数据编码为 utf8 并返回正确的文本。 enter image description here

这里是将一个字符串编码为utf8字符串。 enter image description here


我知道这是一张图像,但我想显示结果。如果这些不起作用,数据库可能会剥离位。这很糟糕,也不知道接下来该怎么做,如果你想要 unicode 支持,你可能不应该使用该数据库。

关于Swift 将 UTF16 转换为 UTF8 并返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35713551/

相关文章:

java - 来自外部jar问题的Spring UTF-8消息资源

javascript - 在 Express 服务器中以 UTF-16 编码发送 JSON 响应

ios - 未设置 Imageview 角半径

ios - 由于字符串编码,无法从 NSURL 分配 UIImage

java - 验证字符串是用 Java 编码的 UTF-8

c++11 - 如何逐行将 utf-16 文件读入 utf-8 std::string

git gui - 可以显示 UTF16 吗?

ios - JSValue 初始化( bool :in:) vs JSValueMakeBoolean()

swift - 提交 App 时 Swift 支持无效

java - 在 JAVA 变量名中使用 UTF-8 字符