Lorsque j'utilise cette méthode simple d'encodage / décodage, j'ai une petite erreur. Lorsque la saisie utilisateur via le scanner est comme:
Chaîne: "Bonjour, je m'appelle Michael"
Encode: "Pmttw (u? (Vium (q {(Uqkpimt"
Décoder: "Bonjour m7 nom est Michael"
son décodé comme 'y' est maintenant '7'
public static String basicEncode(String key) { String result = ""; int lon = key.length(); char d; for(int i = 0; i < lon; i++) { d = key.charAt(i); d += 10; result += d; } return result; } public static String basicDecode(String key) { String result = ""; int lon = key.length(); char d; for(int i = 0; i < lon; i++) { d = key.charAt(i); d -= 10; result += d; } return result; }
3 Réponses :
Il manque un 10 dans votre code dans basicDecode. En dehors de cela, vous ne voyez pas votre problème.
Hello my name is Michael Rovvy*w?*xkwo*s}*Wsmrkov Hello my name is Michael
Cela produit le résultat suivant:
public static void main(String args[]) { String in = "Hello my name is Michael"; String encoded = basicEncode(in); String decoded = basicDecode(encoded); System.out.println(in); System.out.println(encoded); System.out.println(decoded); } public static String basicEncode(String key) { String result = ""; int lon = key.length(); char d; for (int i = 0; i < lon; i++) { d = key.charAt(i); d += 10; result += d; } return result; } public static String basicDecode(String key) { String result = ""; int lon = key.length(); char d; for (int i = 0; i < lon; i++) { d = key.charAt(i); d -= 10; result += d; } return result; }
Si vous cherchez à obtenir ceci:
Encode: "Pmttw (u? (vium (q {(Uqkpimt"
pour votre code alors
public static String basicEncode(String key) { String result = ""; int lon = key.length(); char d; for (int i = 0; i < lon; i++) { d = key.charAt(i); d += 8; //CHANGED TO 8 result += d; } return result;
Peut-être y a-t-il quelque chose avec UTF-8 sur mon ordinateur, parce que lorsque j'exécutais ce même code sur un autre environnement PC, cela fonctionnait bien.
Comment puis-je vérifier ce qui ne va pas?
Je sais que lorsque je veux changer le nombre de positions à moins de 8, cela fonctionne bien, mais pourquoi pas s'il est égal ou supérieur à 10?
Changer UTF-8 en Cp1250 a fonctionné pour moi. Windows -> Préférences -> Espace de travail -> "Encodage de fichier texte" défini sur Par défaut (Cp1250)
Solution: par défaut dans mon espace de travail (Eclipse / Windows / Préférences / Espace de travail / Encodage de fichier texte >>>> basculer Default (Cp1250) à UTF-8