1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Frage zur Darstellung von Sonderzeichen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von RED-BARON, 28.10.2009.

  1. RED-BARON, 28.10.2009 #1
    RED-BARON

    RED-BARON Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    146
    Erhaltene Danke:
    19
    Registriert seit:
    06.10.2009
    Hallo,

    ich bekomme eine Zeichenfolge welche an der Stelle für ein kleines
    "ü" 3 Bytes enthält ( -17 -65 -68 ) das ist wohl UTF8. Beim decodieren
    nach den Regeln für UTF8 bekomme ich auch 0xFC raus was dem "ü"
    nach Ascii Tabelle entspricht.

    Warum das 3 Bytes sind und nicht nur 2 wie eigentlich notwenig weiß
    ich jetzt nicht.

    In einer Listendarstellung wird aber nur wie im Debugger ein Kästchen
    angezeigt und nicht der Buchstabe.

    wie muss der String konvertiert werden bevor er einem z.B.
    ListAdapter zugeführt wird ?


    Vielen Dank im Voraus.

    // Gelöst:
    ( Tja als Java Newbie weiß ich jetzt den Unterschied zwischen char[] und byte[] :D )
     
    Zuletzt bearbeitet: 24.02.2011
  2. RED-BARON, 24.02.2011 #2
    RED-BARON

    RED-BARON Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    146
    Erhaltene Danke:
    19
    Registriert seit:
    06.10.2009
    :sneaky:

    Nun habe ich das selbe Problem wieder und weiss nicht mehr die Lösung :lol:

    ein PHP Script sendet mir das Zeichen "ä" - mehr nicht.

    Mit nachstehenden Zeilen empfange ich das "ä"


    HttpGet request = new HttpGet(http://localhost/test.php);
    HttpResponse response = client.execute(request);

    InputStream in = response.getEntity().getContent();

    BufferedReader reader = new BufferedReader(new InputStreamReader(in));

    while(dbAdapter != null && null != (line = reader.readLine()))

    {

    dbAdapter.execSQL(line);

    }








    in "line" steht ein [], line.getBytes() gibt ein Array mit 3 Byte zurück

    -17, -65, -67

    das ist definitv mein "ä" :)

    das ganze schreibe ich dann in eine Tabelle. In Line steht also in Echt
    noch ein wenig mehr als nur ein "ä" und hole das über einen ListAdapter
    wieder in eine List und diese zeigt nun nur ein auf der Ecke stehendes
    Viereck mit einem Fragezeichen an :angry:

    Der String aus der SQL Abfrage im "ViewBinder" enthält auch wieder
    diese 3 Bytes


    privateclass DecryptShowViewBinder implements SimpleCursorAdapter.ViewBinder
    {
    @Override
    publicboolean setViewValue(View view, Cursor cursor, int columnIndex)
    {
    String text = cursor.getString(columnIndex);

    ((TextView)view).setText(text);
    returntrue;
    }
    }

    cursor_right = mDBAdapter.query("nwl", new String[] { "_id", "Name"}, null, null, null, null,null);
    adapter_right = new SimpleCursorAdapter(context, android.R.layout.simple_list_item_1, cursor_right,
    new String[] { "Name" }, newint[] { android.R.id.text1 });
    adapter_right.setViewBinder(new DecryptShowViewBinder());
    listview_right.setAdapter(adapter_right);



    Nun habe ich geprüft:

    String s = "ä";
    bytes[] b = s.getBytes();

    hier stehten in b nur 2 Bytes ! Es gibt also definitiv ein Unterschied
    zwischem dem was ich empfange und dem was ich erzeuge - so denn
    Umlaute im Code selbst verwendet werden.

    Kann das Problem jemand von Euch nachvollziehen ? Soll ja Leute
    geben die haben einen Webserver am laufen.

    test.php
    <?
    echo "ä\n";
    ?>


    Besten Dank ! RB


    // Gelöst , mal wieder *g*

    wenn man weiß welches Charset[1] man dem InputStreamReader mit übergeben muss ist es ganz einfach ;)


    String line = "";

    InputStream in = response.getEntity().getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in, "windows-1252")); // ANSI CODE
    while(dbAdapter != null && null != (line = reader.readLine()))
    {
    dbAdapter.execSQL(line);
    }


    ( seit Gutenberg, immer die Quellen mit angeben, gel :))) )






     
    Zuletzt bearbeitet: 25.02.2011

Diese Seite empfehlen