gpt4 book ai didi

android - 使用 iOS 键盘输入时表情符号不显示在 NSAttributedString 中,在 Android 上输入时显示

转载 作者:可可西里 更新时间:2023-11-01 03:57:53 25 4
gpt4 key购买 nike

我正在制作一个消息应用程序,当我从 Android 端发送表情符号时,它在 iOS 端显示正常,但 iOS 端无法(似乎)显示来自 iOS 自己的键盘的表情符号!

我在其中显示表情符号的标签使用属性文本,文本来自 HTML。以下代码用于生成 NSAttributedString

var msg = getTextForDisplay()//Essentially gets the plain text
msg = "<span style=\"font-family: Helvetica; font-size:14pt;\">" + msg + "</span>"
if let data = msg.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false){
let attributed = try? NSAttributedString(data: data, options: [ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType ], documentAttributes: nil)
return attributed
}

更奇怪的是,当我从 iOS 发送表情符号时,虽然它没有如上所述显示在标签中,但它在 Android 端显示得非常好。在 iOS 端,在标签中,它显示了一些乱码(也许是 unicode 字符?)

例如:enter image description here

我绝对确定错误与表情符号的显示有关,因为当打印到控制台时,我看到了真实的表情符号,而且当保存到设备存储中并稍后在 Mac 上读取时,它是真实的表情符号。但是当表情符号加载到属性标签中时,它显示乱码

感谢任何帮助。我知道这个问题与编码有关我只是不确定问题到底是什么以及如何解决它

最佳答案

我们在评论中验证了源字符串没问题。只需更改一个参数! Swift 通常对字符串使用 UTF-16。您正在丢失将其作为 UTF-8 处理的信息。

改变:

msg.dataUsingEncoding(NSUTF8StringEncoding

收件人:

msg.dataUsingEncoding(NSUTF16字符串编码

对于 swift 5: 使用此 msg.data(using: String.Encoding.utf16, allowLossyConversion: false)

关于android - 使用 iOS 键盘输入时表情符号不显示在 NSAttributedString 中,在 Android 上输入时显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979608/

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