为啥当我使用 nativescript 从 iOS 发送表情符号字符时会收到陌生字符串
Posted
技术标签:
【中文标题】为啥当我使用 nativescript 从 iOS 发送表情符号字符时会收到陌生字符串【英文标题】:Why i get stranger string when i send emoji character from iOS with nativescript为什么当我使用 nativescript 从 iOS 发送表情符号字符时会收到陌生字符串 【发布时间】:2019-07-05 15:54:56 【问题描述】:我在服务器端使用 Nativescript + Vuejs 和 Nodejs + MongoDB 工作的应用程序,当我将表情符号字符从我的 ios (12.1.4) 发送到 Nodejs 服务器时遇到问题。
例如,当我发送表情符号 SMILING FACE WITH HEART-SHAPED EYES (????) 时,我希望字符串看起来像 【参考方案1】:
您的编码代码可以简化为
extension String
func encode(_ s: String) -> String
let data = s.data(using: .nonLossyASCII, allowLossyConversion: true)!
return String(data: data, encoding: .utf8)!
请注意,它会将所有非 ASCII 字符编码为 \uNNNN,而不仅仅是表情符号。通过反转转换来完成解码:
extension String
func decode(_ s: String) -> String?
let data = s.data(using: .utf8)!
return String(data: data, encoding: .nonLossyASCII)
这会返回一个可选项,因为它可能会因无效输入而失败。
例子:
let s = "Hello ?."
let e = encode(s)
print(e) // Hello \ud83d\ude03.
if let d = decode(e)
print(d) // Hello ?.
您可能想选择更好的函数名称,我希望这能奏效。
【讨论】:
谢谢,你给了我一个启示,最终的解决方案是发送时使用 encodeURI(string),存储到 MongoDB 时使用 decodeURI(string)以上是关于为啥当我使用 nativescript 从 iOS 发送表情符号字符时会收到陌生字符串的主要内容,如果未能解决你的问题,请参考以下文章
Nativescript-vue原生iOS导航按钮在ActionBar上设置标题后消失
无法从本地路径加载Nativescript vue中的图片,但是用http/https就可以了,为啥?