【发布时间】:2016-04-08 17:42:16
【问题描述】:
我通过 REST API 接收到一个字符串,其中包含\uXXXX 形式的 unicode 编码字符
例如Ain\u2019t 应该是 Ain’t
有没有很好的方法来转换这些?
【问题讨论】:
标签: swift unicode-string
我通过 REST API 接收到一个字符串,其中包含\uXXXX 形式的 unicode 编码字符
例如Ain\u2019t 应该是 Ain’t
有没有很好的方法来转换这些?
【问题讨论】:
标签: swift unicode-string
你可以使用\u{my_unicode}:
print("Ain\u{2019}t this a beautiful day")
/* Prints "Ain’t this a beautiful day"
来自Language Guide - Strings and Characters - Unicode:
字符串字面量可以包含以下特殊字符:
...
- 任意 Unicode 标量,写为 \u{n},其中 n 是 1–8 位 十六进制数,其值等于有效的 Unicode 代码点
【讨论】:
\u 后面的 4 个字符并替换为上面给出的答案。
let a = "Ain\u2019t this a beautiful day" 不会编译,所以我想知道 API 对无效的特殊字符 \u... 做了什么?
NSJSONSerialization 类,它应该包含处理带有转义后缀\u(优先的unicode字符的现有方法将其分配给 swift 本机 String 对象)。参见例如stackoverflow.com/questions/24318171/… 和 stackoverflow.com/questions/29004561/…
您可以应用字符串转换StringTransform:
extension String {
var decodingUnicodeCharacters: String { applyingTransform(.init("Hex-Any"), reverse: false) ?? "" }
}
let string = #"Ain\u2019t"#
print(string.decodingUnicodeCharacters) // "Ain’t\n"
【讨论】:
\U200b 与\u200b 不同