Ich habe gerade angefangen, mit Android NFC zu programmieren, ich habe erfolgreich NDEF-Daten in mifare classic-Tags gelesen und geschrieben. Das Problem ist, wenn App die Payload von Ndef-Datensatz liest, es immer Zeichen '* en' am Anfang des Textes enthält. Ich denke es ist Sprachcharakter, aber wie bekommt man die richtige Textnachricht ohne dieses Zeichen?
Dies ist der Screenshot, welche App aus dem Tag gelesen hat, der eigentliche Text ist 'Hallo Welt'
Hier ist der Code zum Lesen
%Vor%Was Sie sehen, sind die Rohdaten eines NDef-Textsatzes, der in UTF8 konvertiert wurde.
Der NDef-Text-Datensatz ist wie folgt aufgebaut:
Erstes Byte: Control-Byte
Bit 7: 0: Der Text ist in UTF-8 codiert 1: Der Text ist codiert UTF16
Bit 6: RFU (MUSS auf Null gesetzt werden)
Bit 5..0: Die Länge des IANA-Sprachcodes.
Es folgt der Sprachcode, der in US-ASCII (in Ihrem Fall) wie in RFC 3066 definiert gespeichert ist. Die Länge des Sprachcodes wird im Steuerbyte angegeben.
Danach folgt der Text in dem Format wie in Bit 7 des Control-Bytes angegeben.
Das leere Quadratzeichen stammt aus Ihrer Konvertierung von Rohdaten in UTF-8. Ich bin mir fast sicher, dass das Kontrollbyte in Ihrem Fall den numerischen Wert 2 hat. Da für diesen numerischen Wert kein druckbares Zeichen vorhanden ist, wird es durch das nicht druckbare Platzhalterzeichen aus dem Unicode-Set ersetzt. Dies wird normalerweise als leeres Quadrat angezeigt.