Caractère espagnol non pris en charge par le serveur Linux

J’ai une application Java où l’utilisateur entre des “caractères espagnols” de l’interface utilisateur et qui doit être affichée sur une autre page. L’application fonctionne correctement dans l’environnement WINDOWS, mais lorsqu’elle est déployée sur un serveur UNIX / Linux, les caractères espagnols ne sont pas affichés correctement .

Voici mes parameters régionaux Unix (en utilisant la commande locale )

LANG= LC_CTYPE="C" LC_COLLATE="C" LC_MONETARY="C" LC_NUMERIC="C" LC_TIME="C" LC_MESSAGES="C" LC_ALL= 

mon encodeur de caractère unix box (en utilisant java j’ai coché Charset.defaultCharset() ) est ISO 8859 1 Et mon code java pour afficher ces données est

 spanishName = new Ssortingng(spanishName.getBytes("8859_1"), "UTF-8"); 

maintenant il imprime N?? L???d? N?? L???d?

Si j’imprime directement cette variable, alors NT= LTß±dTr .

Mais les données originales sont Néó Léáñdér

L’encodage UTF-8 ne s’affichera pas dans les parameters régionaux “C” de POSIX. Votre serveur peut prendre en charge d’autres parameters régionaux. Pour voir ça, lancez

 locale -a 

et recherchez les parameters se terminant par une variété de “utf8” ou “utf-8” (majuscules et minuscules). Si vous en trouvez un, définissez les variables d’environnement de votre environnement local.

En supposant que vous trouvez en_US.UTF-8 . Ensuite (en supposant que votre shell soit ksh ou bash ), vous pouvez exécuter ces commandes avant d’exécuter votre application Java:

 unset LANGUAGE LANG=en_US.UTF-8; export LANG LC_CTYPE=en_US.UTF-8; export LC_CTYPE LC_ALL=en_US.UTF-8; export LC_ALL 

Dans csh , ce serait

 unsetenv LANGUAGE setenv LANG en_US.UTF-8 setenv LC_CTYPE en_US.UTF-8 setenv LC_ALL en_US.UTF-8 

Cela définirait les parameters régionaux du système . Il existe des moyens supplémentaires pour définir les parameters régionaux, comme indiqué dans

  • Comment définir les parameters régionaux par défaut pour ma JVM?
  • Internationalisation: comprendre les parameters régionaux dans la plate-forme Java

C’est-à-dire, sur la ligne de commande (en citant la documentation d’Oracle):

Deuxièmement, sur certaines implémentations d’exécution Java, l’utilisateur de l’application peut remplacer les parameters régionaux par défaut de l’hôte en fournissant ces informations sur la ligne de commande en définissant les propriétés système user.language, user.country et user.variant.

et ça donne comme exemple

 java -Duser.language=fr -Duser.country=CA Default 

et enfin,

Troisièmement, votre application peut appeler la méthode setDefault (Locale aLocale) . La méthode setDefault (Locale aLocale) permet à votre application de définir une ressource à l’échelle du système. Après avoir défini les parameters régionaux par défaut avec cette méthode, les appels suivants à Locale.getDefault () renverront les parameters régionaux nouvellement définis.

Notez que Java utilise des noms différents des parameters régionaux du système et que tous ne sont pas pris en charge sur chaque plate-forme (voir tableau ). vous devrez trouver ce qui fonctionne pour vous.