Eigenen Charset Encoder/Decoder/Provider , Codepage

Guten Tag,
ich habe vergeblich Stunden bei google verbracht um eine Lösung zu finden… jedoch erfolglos.

Wie kann ich in JAVA ein eigenen Charset Encoder/Decoder/Provider, eine eigene Codepage erstellen.

Das Ziel ist es den folgenden Code zu ermöglichen:

String bert = new String ("\u00F0\u00F1".getBytes(), Charset.forName(„eigene_cp“));

Danke im Voraus

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

okay mir fehlt nur noch die eigendliche Umsetzung:

wie bekomme ich es hin das mein Programm einen Text nimmt, die Buchstaben in Hexadezimalzahlen ausliest ( z.B. a = 0x61 ) und ich ihm jetzt sage er soll darauf 0x81 machen.

Das wäre von ISO 8859-15 zu EBCDIC 1141

Hallo,

Geht es dir darum das selbst zu implementieren oder nur um die Lösung? „Meine“ Java Installation kennt das Charset IBM01141

Charset cp1141 = Charset.forName("IBM01141");
System.out.println(cp1141);
for(String alias : cp1141.aliases()) {
 System.out.println(" alias: " + alias);
}

Output:

IBM01141
 alias: cp1141
 alias: 1141
 alias: cp01141
 alias: ccsid01141
 alias: ebcdic-de-273+euro

HTH
Heavy

genau und statt IBM01141 will ich einen eigenen Eintragen.
der Decoder Encoder Provider is soweit ok aber es geht um die eigendlich „umwandlungsmethode“.

Kleiner Auschschnitt wie ich es habe :

public static void zansDecode(CharBuffer cb){
for (int pos = 0; pos

Hallo,

vielleicht hilft es einen Blick auf die Klassen des JDK zu werfen: http://grepcode.com/file/repository.grepcode.com/jav…

Gruß
Heavy