CoreNFC 短信只产生双字节字符?
Posted
技术标签:
【中文标题】CoreNFC 短信只产生双字节字符?【英文标题】:CoreNFC Text message produces double byte chars only? 【发布时间】:2020-05-31 17:48:19 【问题描述】:我已成功连接(读取和写入)到 NDEF 标记。该标签是我的原型板上的 NXP 电子标签,我可以使用 I2C 协议读取它。我只处理纯文本消息。
写入标签虽然成功,但仅生成双字节字符文本。创建短信的方法是:
guard let testRecord = NFCNDEFPayload.wellKnownTypeTextPayload(
string: String(describing: "blah blah".cString(using: String.Encoding.utf8)),
locale: .current)
else return
并写入标签:
let myMessage = NFCNDEFMessage.init(records: [testRecord])
tag.writeNDEF(myMessage)
数据到达标签但被编码(看起来)为两个字节。具体来说,字符串 "blah blah" 中的每个字符都以 \x00 开头,从而导致 \x00 \b \x00 \l \x00 \a
等。
我认为如果仅使用 ASCII 集中的字符,.utf8 编码将下降到仅标准 ASCII(单字节)。
如何确保 NDEF 消息是用单字符 ASCII 编码的?
【问题讨论】:
【参考方案1】:对于任何登陆这里的人,简短的回答是;是的,NFCNDEFPayload.wellKnownTypeTextPayload() 仅将字符串编码为 utf16(记录这个 Apple 的工作真好!)。为了解决这个问题,您需要通过构建自己的有效负载来降低一层。看看这个答案:NFC NDEF writing on ios Encoding
【讨论】:
以上是关于CoreNFC 短信只产生双字节字符?的主要内容,如果未能解决你的问题,请参考以下文章