Convertissez une chaîne en ByteBuffer, puis de ByteBuffer en chaîne en utilisant Java :
import java.nio.charset.Charset;
import java.nio.*;
String babel = "obufscate thdé alphebat and yolo!!";
System.out.println(babel);
//Convert string to ByteBuffer:
ByteBuffer babb = Charset.forName("UTF-8").encode(babel);
try{
//Convert ByteBuffer to String
System.out.println(new String(babb.array(), "UTF-8"));
}
catch(Exception e){
e.printStackTrace();
}
qui imprime d'abord la chaîne de caractères nue, puis le ByteBuffer casté en array() :
obufscate thdé alphebat and yolo!!
obufscate thdé alphebat and yolo!!
Cela m'a également été utile, la réduction de la chaîne en octets primitifs peut aider à inspecter ce qui se passe :
String text = "こんにちは";
//convert utf8 text to a byte array
byte[] array = text.getBytes("UTF-8");
//convert the byte array back to a string as UTF-8
String s = new String(array, Charset.forName("UTF-8"));
System.out.println(s);
//forcing strings encoded as UTF-8 as an incorrect encoding like
//say ISO-8859-1 causes strange and undefined behavior
String sISO = new String(array, Charset.forName("ISO-8859-1"));
System.out.println(sISO);
Imprime votre chaîne interprétée en UTF-8, puis à nouveau en ISO-8859-1 :
こんにちは
ããã«ã¡ã¯
3 votes
Eh bien, tu as essayé ?
6 votes
Oui, je l'ai fait et ça marche. Mais j'ai vu d'autres implémentations plus complexes, telles que stackoverflow.com/questions/1252468/
1 votes
@Doorknob et. al. Il manque l'encodage et son exemple (lorsque la syntaxe sera corrigée) fonctionnera, mais sa méthode n'est toujours pas correcte.