Frage zur Darstellung von Sonderzeichen

R

RED-BARON

Fortgeschrittenes Mitglied
19
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:
: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:

Ähnliche Themen

M
Antworten
2
Aufrufe
626
Mozart40
M
A
Antworten
1
Aufrufe
582
swa00
swa00
R
  • Gesperrt
  • roland-senior
Antworten
2
Aufrufe
796
Fulano
Fulano
Zurück
Oben Unten