如何编码NDEF消息

时间:2014-11-02 08:47:59

标签: android cordova utf-8 nfc ndef

这是我第一次使用基于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应用程序。

感谢。

2 个答案:

答案 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,我见过