这是我第一次使用基于 NFC
的功能。我遇到了有关编码 NDEF 消息的问题。
我们尝试了 2 个应用程序将数据写入 NFC 标签,名称是 NDEF 和 TagWriter
。我正在将我的数据写入文本格式。这就是我的数据
{name:myTag,tagDetails:{name:"myOrganization",addess:"xxxxx"}}
据我所知,这两个应用程序都在编码并将数据注入(inject)标签。问题出在读取时间上。
读取标签后,我将字节转换为字符串,如 nfcEvent.tag.ndefMessage[0].payload
。
NDEF App
写入的标签是什么,在将我写入标签的确切数据转换后。
TagWritter
的问题,转换此标签数据后,它会以这种格式出现。
"en"{name:myTag,tagDetails:{name:"myOrganization",addess:"xxxxx"}}""
关于这一点,我做了一些研究,我发现 TagWritter App
将数据转换为 UTF-8
格式。
我认为正因为如此,它正在发生。可能是我错了。
我该如何解决这个问题。
注意:我正在使用 Apache cordova
构建 android 应用程序。
谢谢。
最佳答案
如果您在数据前看到类似“en”(实际上是非特权字符 + 语言代码)的内容,这表明您的标签编写器应用程序将文本字符串放入 NFC 论坛文本记录中(您可以获取来自 NFC Forum's website 的规范)。
记录由一个状态字节、一个语言代码(US-ASCII)和后面的实际文本组成。状态字节的高位 (b7) 指示文本是以 UTF-8 (b7 = 0
) 还是 UTF-16 (b7 = 1
) 编码的。低 6 位 (b5..0) 表示语言代码的字节长度。
因此只要语言代码是 2 个字节,您修剪前三个字节的解决方案就可以工作。
但是,NFC 论坛文本记录类型专门用于人类可读的文本,您应该避免使用它来存储 JSON 对象。最好使用 NFC 论坛外部类型记录(或自定义 MIME 类型记录)来存储您的数据。
关于android - 如何编码 NDEF 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697580/