Lire de L'EBCDIC

Tagged:

Dans l'AS400 tout est en EBCDIC ... non pas que l'as400 ne soit pas capable de faire de l'UTF, mais que tous les programmes qui tournent dessus depuis 50 ans, ils sont tous compilé pour tourner en EBCDIC ... Donc parfois il y a des fichiers qui avec une requête SQL nous renvoie des truc incomprehensible ...

Donc voila une petite fonction qui convertit un InputStream EBCDIC en String ASCII =)

	public static String readEBCDIC(InputStream is) throws HelperException {
		try {
			byte [] bs = new byte[1025];
			is.read(bs);
			
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			baos.write(bs);
			
			return baos.toString("Cp1047");
			
		} catch (Exception e) {
			throw new HelperException(e);
		}
	}

Et voili ... pour s'en servir, sur un object ResultSet par exemple il faut faire :

MonObject.readEBCDIC(resultset.getBinaryStream("mon_champ"));

Et voili pas plus compliqué, mais bien pratique !

PS, il se peut que la limite de 1025charactères ne soit pas suffisante (oui merci cobol qui fout des FILLER de données désorganisées...) donc modifiez en fonction des besoins =)