gpt4 book ai didi

swift - 无效的狗脸标量

转载 作者:搜寻专家 更新时间:2023-10-31 22:04:08 24 4
gpt4 key购买 nike

我以为我很了解 Swift 中的 Unicode 标量,但狗脸表情符号证明我错了。

for code in "🐶".utf16 {
print(code)
}

UTF-16 编码为 5535756374。在十六进制中,即 d83ddc36

现在:

let dog = "\u{d83d}\u{dc36}"

我得到的不是带有“🐶”的字符串,而是一个错误:

Invalid unicode scalar

我尝试使用 UTF-8 代码,但它也不起作用。不抛出错误,而是返回“ð¶”而不是狗脸。

这里有什么问题吗?

最佳答案

\u{nnnn} 转义序列需要一个 Unicode scalar value ,而不是 UTF-16 表示(具有高和低代理项):

for code in "🐶".unicodeScalars {
print(String(code.value, radix: 16))
}
// 1f436

let dog = "\u{1F436}"
print(dog) // 🐶

可以在 Is there a way to create a String from utf16 array in swift? 找到从 UTF-16 表示重建字符串的解决方案.例如:

let utf16: [UInt16] = [ 0xd83d, 0xdc36 ]
let dog = String(utf16CodeUnits: utf16, count: utf16.count)
print(dog) // 🐶

关于swift - 无效的狗脸标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54324468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com