Как кодировать сообщение 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);
Это ссылка, которую я видел