Hallo,
Wie kann ich in JAVA ein eigenen Charset
Encoder/Decoder/Provider, eine eigene Codepage erstellen.
Wie es in der Klasse CharsetProvider beschrieben ist: http://docs.oracle.com/javase/7/docs/api/java/nio/ch…
Das Ziel ist es den folgenden Code zu ermöglichen:
String bert = new String ("\u00F0\u00F1".getBytes(),
Charset.forName(„eigene_cp“));
Ein (wenig sinnvolles) Quick & Dirty Beispiel:
import java.util.\*;
import java.nio.charset.\*;
public class MyCharsetProvider extends java.nio.charset.spi.CharsetProvider {
private static final String myCharsetName = "MyCharset";
private static final String[] aliases = new String[] {"eigene\_cp"};
private static final MyCharset myCharset = new MyCharset(myCharsetName, aliases);
private static final CharsetDecoder utf8Decoder = Charset.forName("UTF-8").newDecoder();
public Charset charsetForName(String charsetName) {
if(myCharsetName.equals(charsetName))
return myCharset;
for(String alias : aliases) {
if(alias.equals(charsetName))
return myCharset;
}
return null;
}
public Iterator charsets() {
List l = new ArrayList();
l.add(myCharset);
return l.iterator();
}
public static void main(String[] args) {
System.out.println("MyCharset: " + Charset.forName("MyCharset"));
String bert = new String ("\u00F0\u00F1".getBytes(), Charset.forName("eigene\_cp"));
System.out.println("bert: " + bert);
}
private static class MyCharset extends Charset {
public MyCharset(String name, String[] aliases) {
super(name, aliases);
}
public boolean contains(Charset c) {
return myCharset.equals(c);
}
public CharsetDecoder newDecoder() {
return utf8Decoder;
}
public CharsetEncoder newEncoder() {
return null;
}
}
}
Die Datei java.nio.charset.spi.CharsetProvider enthält lediglich die Zeile MyCharsetProvider
HTH
Heavy