android - 如何编码 NDEF 消息

标签 android cordova utf-8 nfc ndef

这是我第一次使用基于 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/

相关文章:

Java - Objective C Socket UTF8 问题

java - Android Studio问题|等待进程出现在设备上超时

javascript - 我们可以使用 Jquery 或 Javascript 从 .js 文件读取/写入 Json 数据吗?

android - 如何使用 GoogleApiClient 在 Google Plus 中获取好友列表?

cordova - phonegap设置 Assets 文件的根目录

javascript - Cordova 6.5.0 无法使用 cordova-plugin-media 录制音频失败重命名/存储/模拟/0/tmprecording-1489806941198.3gp

mysql - 使用国际字符时,我从 mysql 查询中得到双重结果,即 Å/Ä=A & Ö=O,

python - Python 的 Google App Engine utf-8 编码问题

android - 使用 PhoneGap Build 的 BackgroundFetch/后台运行应用程序

显示初始化错误的 Java-MP3 文件