konvertere streng fra Windows-charset til UTF 8 i Java

Indlæg af Hanne Mølgaard Plasc

Problem



så jeg skal give nogle argumenter til min Java-app, som kaldes fra en .bat-fil. Gør dette gør argumenterne har systemets charset-kodning, hvilket gør nogle tegn vist fejlagtigt. Jeg prøvede dette


     String titulo;

     titulo = new String (args[1].getBytes(),"Cp1252");


også forsøgt med et par andre fra denne liste http://docs.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html og ingen af ​​dem lykkedes.
Hvordan kan jeg også kode en streng fra Windows-charset til Java's UTF 8?
Mange tak på forhånd! [6]


Hilsen Rodrigo.


EDIT: Argumentet jeg giver i .bat er Martín og output (som er en JLabel viser) viser denne MartÝn.

Bedste reference


Windows-kommandoprompten cmd.exe bruger faktisk ikke CP1252. Det, der anvender, er tilsyneladende afhængig af systemet; i de vesteuropæiske systemer er det mest sandsynligt CP850 . Så du kan prøve dette:


titulo = new String (args[1].getBytes(),"Cp850");


Du kan se kodetabellerne til cp850 for at kontrollere, hvad der skal ske: i er byte ED i latin 1 (og i forlængelse cp1252) og byte ED i cp850 er Ý. Derfor: Hvis du udskriver 'i' fra en Java GUI til cmd.exe, vises den som 'Ý'. [7]


(Men du ser ud til at se omvendt: 'i' fra terminalen vises som 'Ý' i en GUI. Det giver ikke mening, cmd.exe skal passere byte A1 til Java, som skal fortolke det som '¡' ..)