OVH Cloud OVH Cloud

Delphi / Mactintosh

4 réponses
Avatar
Frederic WOEHL
Salut à tous,

Dans une Applet je récupère des Strings venant de Delphi que je vais
ensuite afficher dans un java.awt.Label. Ces strings ont leurs
caractères accentués remplacé par des #xxx.

par exemple:

param#232tres pour paramètres

J'ai fait une routine de conversion:

public static String Delphi2Java( String s ) {
if( s.indexOf( "#" ) >= 0 ) {
for( int c = 190 ; c <= 255 ; c++ ) {
String pattern = "#" + c ;
int pos = s.indexOf( pattern ) ;
while( pos >= 0 ) {
char insertedChar = ( char )c ;
s = s.substring( 0 , pos ) + insertedChar + s.substring( pos + 4 )
;
pos = s.indexOf( pattern ) ;
}
}
}
return s ;
}

Mais je ne suis pas sur que l'usage de la valeur 232 pour è par exemple,
qui marche très bien sous Windows, fonctionnera aussi sous MAC. Ne
devrait-je pas inserer le caractère unicode correspondant et comment ?
ou bien faire une conversion de ma string en unicode en utilisant un
jeux de caractère MAC et comment ?

Merci d'avance de votre avis.
FRED

4 réponses

Avatar
MacTotoche
Frederic WOEHL wrote:
Dans une Applet je récupère des Strings venant de Delphi que je vais
ensuite afficher dans un java.awt.Label. Ces strings ont leurs
caractères accentués remplacé par des #xxx.

par exemple : param#232tres pour paramètres

[...] Delphi2Java

Mais je ne suis pas sur que l'usage de la valeur 232 pour è par exemple,
qui marche très bien sous Windows, fonctionnera aussi sous MAC.
Le code que tu donnes ne sera pas OK tel quel sur Mac :(


Ne devrait-je pas inserer le caractère unicode correspondant et comment ?
ou bien faire une conversion de ma string en unicode en utilisant un
jeux de caractère MAC et comment ?
Si tu gardes ta méthode telle quelle, le plus commode me semblerait de

tout passer en UTF-8 après.

String s1, s2;
s1 = Delphi2Java("param#232tres");

// pas compat chez moi
System.out.println(s1);

// compat chez moi
try {
s2 = new String(s1.getBytes("UTF-8")); // voir la doc
System.out.println(s2);
}
catch (Exception ex) { ex.printStackTrace();}

Tu peux aussi aller voir des infos sur les charsets dans la doc de
java.nio.charset.Charset.

--
Olivier
This space for sale.

Avatar
Frederic WOEHL
Salut et merci de ta réponse.

Helas ta solution ne fonctionne pas.
Avec des System.out.println, effectivement j'ai ce que je veux mais mes strings
sont utilisées par des java.awt.Label avec lequel l'affichage n'est pas
correct.

Ma question peut donc se généraliser comme suit:
Quel encodage doit-on utiliser pour afficher des accentués avec un
java.awt.Label sous Windows et sous Macintosh ?

FRED

MacTotoche wrote:

Frederic WOEHL wrote:
Dans une Applet je récupère des Strings venant de Delphi que je vais
ensuite afficher dans un java.awt.Label. Ces strings ont leurs
caractères accentués remplacé par des #xxx.

par exemple : param#232tres pour paramètres

[...] Delphi2Java

Mais je ne suis pas sur que l'usage de la valeur 232 pour è par exemple,
qui marche très bien sous Windows, fonctionnera aussi sous MAC.
Le code que tu donnes ne sera pas OK tel quel sur Mac :(


Ne devrait-je pas inserer le caractère unicode correspondant et comment ?
ou bien faire une conversion de ma string en unicode en utilisant un
jeux de caractère MAC et comment ?
Si tu gardes ta méthode telle quelle, le plus commode me semblerait de

tout passer en UTF-8 après.

String s1, s2;
s1 = Delphi2Java("param#232tres");

// pas compat chez moi
System.out.println(s1);

// compat chez moi
try {
s2 = new String(s1.getBytes("UTF-8")); // voir la doc
System.out.println(s2);
}
catch (Exception ex) { ex.printStackTrace();}

Tu peux aussi aller voir des infos sur les charsets dans la doc de
java.nio.charset.Charset.

--
Olivier
This space for sale.



Avatar
MacTotoche
Frederic WOEHL wrote:
Helas ta solution ne fonctionne pas.
Avec des System.out.println, effectivement j'ai ce que je veux mais mes strings
sont utilisées par des java.awt.Label avec lequel l'affichage n'est pas
correct.
Oups pardon je pensais à des flux alors que tu parlais de Label.

En effet la chaine convertie s2 n'est pas bonne dans ce cas.

Ma question peut donc se généraliser comme suit:
Quel encodage doit-on utiliser pour afficher des accentués avec un
java.awt.Label sous Windows et sous Macintosh ?
Etrangement, ici, la chaine s1 issue de ta methode marche dans un Label.

Comment un (char)232 peut-il donner un "è" sur Mac...
J'en perds mon MacRoman...

--
Olivier
This space for sale.

Avatar
Frederic WOEHL
Encore merci de repondre.

MacTotoche wrote:

Frederic WOEHL wrote:
Helas ta solution ne fonctionne pas.
Avec des System.out.println, effectivement j'ai ce que je veux mais mes strings
sont utilisées par des java.awt.Label avec lequel l'affichage n'est pas
correct.
Oups pardon je pensais à des flux alors que tu parlais de Label.

En effet la chaine convertie s2 n'est pas bonne dans ce cas.

Ma question peut donc se généraliser comme suit:
Quel encodage doit-on utiliser pour afficher des accentués avec un
java.awt.Label sous Windows et sous Macintosh ?
Etrangement, ici, la chaine s1 issue de ta methode marche dans un Label.

Comment un (char)232 peut-il donner un "è" sur Mac...
J'en perds mon MacRoman...



C'est bien sous Windows que cela fonctionne et je cherche à le faire fonctionner
aussi sous MAC.
En fait mon problème est que je n'ai pas de MAC et donc je cherche une méthode
d'abord en théorie. Pour le moment j'envisage une bidouille immonde (on en est tous
là...) via une table de conversion vers MacRoman mais j'attend de trouver deux ou
trois infos avant d'aller tester chez mon client.

FRED


--
Olivier
This space for sale.