cp437

Status
Nicht offen für weitere Antworten.

outbreaker

Bekanntes Mitglied
Hi

ich habe mir auf Sourceforge.net das mp3 liberary von helliker runtergeladen damit ich den Mp3 ID3 Tag bearbeiten kann. Nun habe das Problem das bei mir immer wenn ich eine Mp3File erstellen will ein Fehler kommt
dieser: java.io.UnsupportedEncodingException: Cp437
nun habe herausgefunden das der Fehler an dieser stelle passiert:
String result = new String( buf, 0, 3, ENC_TYPE );
Code:
private final String ENC_TYPE = "Cp437";
private boolean checkHeader() throws FileNotFoundException, IOException {
	RandomAccessFile raf = new RandomAccessFile( mp3, "r" );
	boolean retval = false;

       if( raf.length() > TAG_SIZE ) {
	    raf.seek( raf.length() - TAG_SIZE );
	    byte[] buf = new byte[3];
	    
	    if( raf.read( buf ) != 3 ) {
		throw new IOException("Error encountered reading ID3 header");
	    }
	    else {
	   	String result = new String( buf, 0, 3, ENC_TYPE );
		retval = result.equals( TAG_START );
	    }
	}

	raf.close();
    
	return retval;

Nun wollte ich mal wissen was cp437 ist?!
Ich habe herausbekommen das es ein Zeichensatz ist!
dieser sollte in lib\i18n.jar enthalten sein!!
nun gibt es diese datei bei mir nicht!!!!
wo bekomme ich diese her damit der Fehler nicht mehr auftritt????[/u]
 

0xdeadbeef

Top Contributor
Cp437 ist eine Codepage des ASCII-Zeichensatzes ("MS-DOS United States, Australia, New Zealand, South Africa").

Nach Doku muß eine JVM nur folgende Enconding-Typen unterstützen:

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


Alles andere ist plattformspezifisch!

Allerdings sagt die Release-Info der JRE 1.4.2, daß "Cp437" auf Solaris und Linux immer unterstützt wird (in lib/charsets.jar), auf Windows-Versionen gibt es allerdings ein Problem: der JRE-Installer installiert auf europäischen Rechnern per default nur europäische COdepages (also NICHT die Codepages in lib/charsets.jar). Nur wenn man eine "custom" Installation wählt, kann man auch internatiale Codepages auswählen. Behauptet jedenfalls die Doku, ich kann mich ehrlich gesagt nicht daran erinnern, nach internationaler Unterstpützung gefragt worden zu sein, aber ist auch 'ne Weile her...
Siehe auch hier:
http://java.sun.com/j2se/1.4.2/docs/guide/intl/encoding.doc.html

Hätte also zwei Vorschläge:
1) Du versuchst "Cp437" und wenn es 'ne Exception gibt, nimmst Du "US-ASCII" als Ersatzlösung.
2) Du legst Deinem Programm die Datei "charsets.jar" bei (im richtigen Unterverzeichnis usw.).
 
Status
Nicht offen für weitere Antworten.

Oben