这是我第一次使用基于NFC
的功能。我正面临着关于编码NDEF消息的问题。
我们尝试了2个应用将数据写入NFC标记,名称为NDEF and TagWriter
。我正在将我的数据写成文本格式。这就是我的数据
{name:myTag,tagDetails:{name:"myOrganization",addess:"xxxxx"}}
据我所知,这两个应用都是编码并将数据注入标签。问题在于阅读时间。
读取标签后,我将字节转换为字符串,如nfcEvent.tag.ndefMessage[0].payload
。
在将我写入标签的精确数据转换为NDEF App
之后,有哪些标签。
TagWritter
的问题,转换此标记数据后,它会以这种格式出现。
"en"{name:myTag,tagDetails:{name:"myOrganization",addess:"xxxxx"}}""
关于此,我做了一些调查我发现TagWritter App
将数据转换为UTF-8
格式。
我认为正因为如此,它正在发生。可能是我可能错了。
我该如何解决这个问题。
注意:我正在使用Apache cordova
构建Android应用程序。
感谢。
答案 0 :(得分:2)
如果您看到" en" (实际上是一个不可重复的字符+语言代码)前置于您的数据,这表明您的标记编写器应用程序将文本字符串放入NFC论坛文本记录(您可以从NFC Forum's website获取规范)。 / p>
记录包含状态字节,语言代码(US-ASCII),后跟实际文本。状态字节的高位(b7)指示文本是以UTF-8(b7 = 0
)还是UTF-16(b7 = 1
)编码的。低6位(b5..0)表示语言代码的长度,以字节为单位。
因此只要语言代码是2个字节,修剪前三个字节的解决方案就可以了。
但是,NFC论坛文本记录类型专门用于人类可读的文本,您应该避免使用它来存储JSON对象。最好使用NFC论坛外部类型记录(或自定义MIME类型记录)来存储您的数据。
答案 1 :(得分:0)
我看过插件文档,我正在阅读的内容(chariotsolutions/phonegap-nfc
)。他们本身建议删除不必要的字符。所以我们必须编写代码格式。
nfc.bytesToString(nfcEvent.tag.ndefMessage[0].payload).substring(3);
这是link,我见过