Re: inputstream -> string



Irgendwo muss die Umwandlung von Bytes in Characters passieren,
aber ich wuerde das beim Lesen machen und dann die "symmetrische"
Form machen, den aus dem Reader gelesenen char-Buffer
direkt in den Writer zu schreiben:

Würd ich auch so machen!

private String readStream(InputStream input) throws IOException {
char[] buffer = new char[8192];
Reader in = new InputStreamReader(input);
StringWriter sw = new StringWriter();
int Read;
while ((charsRead = in.read(buffer)) != -1) {
sw.write(buffer, 0, charsRead);
}
return sw.toString();
}

Aber das iss murks. Kein Encoding anzugeben, iss doch hier die Obersünde
Nummer 1. Wer will schon, dass seine App nur mit bestimmten
default-Encoding sauber läuft.

oder noch besser:

private String readStream(InputStream input, String encoding)
throws IOException {
char[] buffer = new char[8192];
Reader in = new InputStreamReader( input, encoding );
StringWriter sw = new StringWriter();
int bytesRead;
while ((charsRead = in.read(buffer)) != -1) {
sw.write(buffer, 0, charsRead);
}
return sw.toString();
}

Daher ist auf jeden Fall diese Variante zu bevorzugen. Vielleicht sollte
man sogar versuchen, dass Charset aus den Headers des Requests zu
extrahieren. Manch ein Client könnte da eins mitschicken.

Wobei mir grade auffällt: ist es nicht sowieso so, dass POST-Daten nur
als ASCII reinflattern dürfen? Später müssen die %XX Sequenzen dekodiert
werden. Und erst dann nimmt man eine Umwandlung mit dem Charset vor. Und
das würde bedeuten, dass der ganze Kram, der ja nach der obrigen Routine
in einem String steckt, wieder in byte[] zu wandeln, um dann wieder
zurück nach String zu wandeln.

Daher würde ich definitiv vorschlagen, die Daten als byte[] zu parsen.

Aber vielleicht sind's ja auch Daten in eigenem Format ...
.



Relevant Pages

  • Re: XmlTextwriter Output als String
    ... String umwandeln. ... StringWriter sw = new StringWriter; ... XmlTextWriter xmlWriter = new XmlTextWriter; ... kann aber das Encoding nicht festlegen. ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: inputstream -> string
    ... den aus dem Reader gelesenen char-Buffer ... private String readStreamthrows IOException { ... private String readStream(InputStream input, String encoding) ...
    (de.comp.lang.java)
  • Re: Why asci-only symbols?
    ... >> Perhaps string equivalence in keys will be treated like numeric equivalence? ... I know typewill be and in itself contain no encoding information now, ... >and a Unicode string, the system default encoding ...
    (comp.lang.python)
  • Re: Byte Array to String
    ... retrieved text will mismatch the original characters. ... encoding the characters. ... Dim strFileData as String ...
    (microsoft.public.dotnet.framework.aspnet)
  • F is evil (was: XML::LibXML UTF-8 toString() -vs- nodeValue())
    ... And with C<use encoding 'utf8';> you'll get the same character string, ... A script is the complete program text, ...
    (comp.lang.perl.misc)

Loading