// Demonstrerar användning av olika kodningar i Reader/Writer
// Lagrar den interna representationen av en ström i en bytearray och
// skriver ut vad varje byte innehåller

import java.io.*;
import static java.lang.System.*; //Statisk import. Ny i Java 5

/*
US-ASCII     Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin
             block of the Unicode character set
ISO-8859-1   ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1
UTF-8        Eight-bit UCS Transformation Format
UTF-16BE     Sixteen-bit UCS Transformation Format, big-endian byte order
UTF-16LE     Sixteen-bit UCS Transformation Format, little-endian byte
             order
UTF-16       Sixteen-bit UCS Transformation Format, byte order identified by
             an optional byte-order mark
*/

public class Unitest {
    public static void main (String [] arg) throws IOException {
	if (arg.length != 2) {
	    out.println("Användning: java Unitest <Sträng> <kodning>");
	    System.exit(0);
	}

        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        OutputStreamWriter osw = new OutputStreamWriter(bos, arg[1]);
        PrintWriter w = new PrintWriter(osw);

        w.write(arg[0]);
        w.flush();
        out.print("[");
        boolean flag = false;
        byte [] ba = bos.toByteArray();

        for (byte o : ba) {
            if (flag) out.print(", ");
            flag = true;
            out.format("%d", o & 0xFF);
	    // Maskar o för att värden över 128 ska skrivas ut som positiva.
        }

        out.println("]");
    }
}
