Nous implémentons une fonctionnalité pour prendre en charge les caractères non imprimables de UTF-8 dans notre base de données. Notre système les stocke dans la base de données et les récupère. Nous collectons des entrées sous la forme de base 64, les convertissons en tableau d'octets et les stockons dans la base de données. Pendant la récupération, la base de données nous donne le tableau d'octets et nous les convertissons en base 64 à nouveau. Pendant le processus de récupération (après que db nous ait fourni le tableau d'octets), tous les attributs sont convertis en tableaux de chaînes, puis ils sont à nouveau convertis en tableau d'octets et sont à nouveau convertis en base 64 pour le rendre à utilisateur.Caractères non imprimables de UTF-8 - SUSE Linux Java ne prend pas en charge
Le code ci-dessous compile et fonctionne correctement dans notre JDK Windows (version Java 8). Mais quand cela est placé dans l'environnement SuSe Linux, nous voyons des caractères étranges.
public class Tewst {
public static void main(String[] args) {
byte[] attributeValues;
String utfString ;
attributeValues = new byte[]{-86, -70, -54, -38, -6};
if (attributeValues != null) {
utfString = new String(attributeValues);
System.out.println("The string is "+utfString);
}
}
}
La sortie donnée est
"La chaîne est ªºÊÚú"
Maintenant, lorsque le même fichier est exécuté sur la distribution SuSe Linux, il me donne:
"La chaîne est "
Nous utilisons Java 8 dans Windows et Linux. Quel est le problème qu'il ne s'exécute pas correctement sous Linux? D'ailleurs, nous avons aussi essayé `utfString = new String (attributeValues," UTF-8 "); . Cela n'a pas aidé de toute façon. Qu'est-ce qui nous manque?
Je suppose que cela n'a rien à voir avec le programme Java, mais avec la police que vous utilisez pour imprimer la chaîne. – Henry
Si tel est le cas, lorsque la chaîne est reconvertie en tableau d'octets, elle doit donner le tableau d'octets d'origine, mais elle donne quelque chose d'autre et non le tableau d'octets d'origine. Nous obtenons 15 valeurs au lieu de 5 dans le tableau d'octets. – javaShilp
Pouvez-vous afficher le code pour ce test de conversion? – Henry