1

我从 web api 收到带有转义的 unicode 字符的字符串,例如:Pla\u010daj Izbri\u0161i.

public func decode(data: Data) throws -> String {
    guard let text = String(data: data, encoding: .utf8) else {
        throw SomeError()
    }

    // text = Pla\u010daj Izbri\u0161i
}

将其转换为正常可显示的 unicode 字符串的最佳方法是什么?

4

1 回答 1

1

假设您data的内容与以下内容相同:

let data = #"Pla\u010daj Izbri\u0161i"#.data(using: .utf8)!
print(data as NSData) //->{length = 24, bytes = 0x506c615c7530313064616a20497a6272695c753031363169}

你可以这样解码:

    public func decode(data: Data) throws -> String {
        guard let text = String(data: data, encoding: .utf8) else {
            throw SomeError()
        }

        let transform = StringTransform(rawValue: "Any-Hex/Java")
        return text.applyingTransform(transform, reverse: true) ?? text
    }

但是,如果你真的从 web api 中得到这种数据,你最好告诉 api 工程师使用一些正常的编码方案。

于 2019-11-28T19:53:32.747 回答