Vreemd karakter op payload van Android NDEF-record

Ik ben net begonnen met het coderen met Android NFC, ik heb met succes de NDEF-gegevens gelezen en geschreven in de mifare classic-tag. Het probleem is wanneer de app de payload uit de ndef-record leest, deze bevat altijd het teken '* en' aan het begin van de tekst. Ik denk dat het een taalkarakter is, maar hoe krijg je de echte sms zonder dat personage?

Dit is het screenshot van welke app de app gelezen wordt, de eigenlijke tekst is 'Hello World'

enter image description here Here is the code to read

@Override
public void onNewIntent(Intent intent) {
    Log.i("Foreground dispatch", "Discovered tag with intent: " + intent);
  //mText.setText("Discovered tag NDEF " + ++mCount + " with intent: " + intent);

    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);

        if (rawMsgs != null) {
            NdefMessage[] msgs = new NdefMessage[rawMsgs.length];

            for (int i = 0; i < rawMsgs.length; i++) {
                msgs[i] = (NdefMessage) rawMsgs[i];
            }

            NdefMessage msg = msgs[0];

            try {
            mText.setText(new String(msg.getRecords()[0].getPayload(), "UTF-8"));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
8
Ik denk dat "en" van "Engels" komt. Ik weet bijna zeker dat je per ongeluk de taalcode hebt toegevoegd. Als u de taaltag in uw xml wijzigt, krijgt u mogelijk een andere tekenreeks. Probeer dat alsjeblieft, want op deze manier weet je tenminste waar vandaan komt en kun je op Google zoeken naar een oplossing.
toegevoegd de auteur Lajos Arpad, de bron
Lajos, Ben ... bedankt voor je reacties, ik heb het geprobeerd met andere apps, NFC-taginformatie, de app toont 'Hallo wereld'. Ik heb het probleem gevonden, zoals Nils Pipenbrik hieronder uitlegt. Deze koppeling code.google.com/p/openmobster/wiki/NFC wordt weergegeven hoe de payload-gegevens correct worden gelezen.
toegevoegd de auteur Lorensius W. L. T, de bron
Probeer de NdefMessage te ontleden met code.google.com/p/ndef-tools- for-android
toegevoegd de auteur ThomasRS, de bron
Als u de code kunt schrijven die de tag schrijft, zou het nuttig zijn. Heb je geprobeerd de app van iemand anders te gebruiken om je tag te lezen om te kijken of deze in de manier is waarop je de tag hebt geschreven, of in de manier waarop je hem leest? (Als dezelfde informatie wordt weergegeven als in het Ndef-bericht, is het een schrijfprobleem. Als alleen 'Hallo wereld ...' wordt weergegeven, is het een leesprobleem.)
toegevoegd de auteur Ben Ward, de bron

1 antwoord

Wat u ziet, zijn de onbewerkte gegevens van een NDef-tekstrecord geconverteerd naar UTF8.

Het NDef-tekstrecord is als volgt opgebouwd:

Eerste byte: controle-byte

Bit 7: 0: de tekst is gecodeerd in UTF-8 1: de tekst is gecodeerd   UTF16

     

Bit 6: RFU (MOET op nul worden gezet)

     

Bit 5..0: de lengte van de IANA-taalcode.

Dit wordt gevolgd door de taalcode die is opgeslagen in US-ASCII (en in uw geval) zoals gedefinieerd in RFC 3066. De lengte van de taalcode wordt gegeven in de besturingsbyte.

En dit wordt gevolgd door de tekst in het formaat zoals gespecificeerd door bit 7 van de besturingsbyte.

Het lege vierkante teken komt van uw conversie van onbewerkte gegevens naar UTF-8. Ik ben er bijna zeker van dat de besturingsbyte in uw geval de numerieke waarde 2 heeft. Aangezien er geen afdrukbaar teken is voor deze numerieke waarde, wordt het vervangen door het niet-afdrukbare tijdelijke aanduidingsteken uit de Unicode-set. Dit wordt meestal weergegeven als een leeg vierkant.

14
toegevoegd
Hallo Nils, bedankt voor je antwoord, nu weet ik hoe ik de gegevens van de payload correct lees, deze link code.google.com/p/openmobster/wiki/NFC laat zien hoe dit moet. ;)
toegevoegd de auteur Lorensius W. L. T, de bron
Hier is ook de definitie van het type NDSF-tekstrecordtype, hoop dat het anderen helpt. maintag.fr/fichiers/pdf-fr/nfcforum-ts-rtd-text-1-0.‌ pdf
toegevoegd de auteur Lorensius W. L. T, de bron
Kopieer de volgende keer de waarden en plak deze in uw antwoord in plaats van te linken. Beide koppelingen zijn dood !!
toegevoegd de auteur nemicolopterus, de bron