Le ˜
n'est pas un tilde, il est le caractère avec unicode 732.
Lorsque vous convertissez à un octet [], vous obtenez deux octets si vous utilisez UTF-8, -53 et -100
Toutefois, si vous ignorez le deuxième et le convertir en un char
vous obtenez 152 (qui est -53 & 0xFF)
vous avez un certain nombre de transformations qui lossy rend impossible de les inverser.
Ce que vous pouvez faire est de convertir le caractère en hexadécimal et vice-versa.
String input = "˜";
String hex = DatatypeConverter.printHexBinary(input.getBytes("UTF-16BE"));
System.out.println("hex: "+hex);
String input2 = new String(DatatypeConverter.parseHexBinary(hex), "UTF-16BE");
System.out.println("input2: "+input2);
impressions
hex: 02DC
input2: ˜
Cela fonctionne pour des chaînes arbitraires (de moins d'un demi-milliard de caractères)
Un tilde n'est pas hexadécimal ou hexadécimal. Pouvez-vous expliquer la combinaison des opérations que vous faites? –
Il n'y a pas de "numéro hexadécimal" (contre "int" "décimal"). Ce sont des formes externes de la même chose. Quand les gens auront 14 doigts, la base sera 14, mais le nombre de pêches dans le basker reste le même –