Как кодировать сообщение 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 ответа

Если вы видите что-то вроде "en" (на самом деле непричитываемый символ + код языка) перед вашими данными, это говорит о том, что ваше приложение для создания тегов поместило текстовую строку в текстовую запись форума NFC (вы можете получить спецификацию из Сайт форума NFC).

Запись состоит из байта состояния, кода языка (в US-ASCII), за которым следует фактический текст. Старший бит (b7) байта состояния указывает, закодирован ли текст в UTF-8 (b7 = 0) или UTF-16 (b7 = 1). Младшие 6 бит (b5..0) указывают длину кода языка в байтах.

Таким образом, пока код языка составляет 2 байта, ваше решение обрезки первых трех байтов будет работать.

Однако тип текстовой записи форума NFC специально предназначен для читабельного текста, и вам, вероятно, следует избегать его использования для хранения объектов JSON. Было бы лучше использовать запись внешнего типа NFC Forum (или запись MIME) для хранения ваших данных.

Я видел документацию по плагину, что я использую для чтения (chariotsolutions/phonegap-nfc). Они сами предлагают удалить ненужные символы. Поэтому мы должны написать код в этом формате.

   nfc.bytesToString(nfcEvent.tag.ndefMessage[0].payload).substring(3);

Это ссылка, которую я видел

Другие вопросы по тегам