2009-08-20 8 views
1

Ich versuche dies:Sonderbare String.getByte (Encoding)

byte[] b = String.getBytes("ASCII") and get an UnsupportedEncodingException Exception 

String fName = new String(b,"ASCII"); 

- got the same when used 

byte[] b = String.getByte("ISO8859_1"); 
String fName = new String(b,"ISO8859_1"); 

edit: getByte zu getBytes geändert

+0

was OS sind Sie auf? – akf

+0

Ausführung unter Windows XP – Andreas

+1

die Frage ist ** geprüft Ausnahmen ** – dfa

Antwort

2

Ich glaube, Sie etwas mehr wollen wie folgen aus:


import java.io.UnsupportedEncodingException; 


public class Encoding 
{ 
    public static void main(String[] args) throws UnsupportedEncodingException 
    { 
     String s = "Hello world"; 
     byte[] b = s.getBytes("US-ASCII"); 
    } 
} 

+0

Mit anderen Worten, @andreas, das Problem ist nicht, dass der Code ** eine Ausnahme auslöst, es ist, dass du nicht eins ** fängst. Ihr Code wurde nicht einmal kompiliert, weil Sie diese geprüfte Ausnahme nicht verarbeitet haben. –

+0

@Alan M: Wie hast du diese Schlussfolgerung gezogen? Wo sagt die Frage, dass der Code nicht kompiliert? Andreas sagt, er "bekommt" eine Ausnahme, aber nicht, ob es zur Ausführungszeit oder zur Kompilierzeit ist. –

7

Dieser Code nicht kompiliert werden - es ist String.getBytes() nicht String.getByte(), und es ist eine Instanzmethode nicht eine statische Methode. Es lohnt sich immer, ein echtes Beispiel zu schneiden und einzufügen, das funktioniert (auch wenn es nur eine Dummy-App ist).

jedoch vorausgesetzt, Sie ähnlichen Code haben die Compilierung ist, sollten Sie "US-ASCII" und "ISO-8859-1" wie die Namen verwenden, wie in der Charset JavaDoc dokumentiert.

+0

+1 guten Fang auf String.getByte – dfa

+0

Ihr Recht.Es ist GetBytes. Mein Fehler in der Frage, aber es erklärt, warum ich diese Ausnahme bekomme (andere CharSets, die ich ausprobiert habe, sind US-ASCII) – Andreas

+2

Das Problem mit Tippfehlern in der Frage ist, dass nicht klar ist, welche Fehler Übertragungsfehler sind (wie getByte/getBytes) und welche * real * -Fehler sind. Hast du * wirklich * "US-ASCII" oder "ASCII"? –

0

Obwohl this still unresolved bug erwähnenswert, ...

"VERSUS ACTUAL erwartetes Verhalten:

Ludicrous Leistung degradiert bei Verwendung der Codierung von "US-ASCII" relativ zur Codierung von "ASCII". Es gibt absolut keinen Grund, warum die Entwickler so völlig unterschiedliche Leistungsprofile erwarten sollten, wenn diese Code für diese beiden Codierungen ausgeführt wird.“

+0

danke für den Kommentar Tom, sicherlich NICHT 'nichts wert'. werde hineinschauen :) – Andreas