Seltsames Zeichen auf Android-NDEF-Datensatz-Nutzdaten

8

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%     
Lorensius W. L. T 27.10.2011, 14:36
quelle

1 Antwort

14

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.

    
Nils Pipenbrinck 27.10.2011, 16:11
quelle

Tags und Links