Encoder une chaîne en UTF-8

J'ai une chaîne avec un caractère "ñ&quot ; et j'ai quelques problèmes avec elle. J'ai besoin d'encoder cette chaîne en encodage UTF-8. J'ai essayé de cette manière, mais cela ne fonctionne pas :

byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");

Comment puis-je encoder cette chaîne en UTF-8 ?

Que diriez-vous d'utiliser

ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
Commentaires (6)
Solution

Les objets String en Java utilisent le codage UTF-16 qui ne peut pas être modifié.

La seule chose qui peut avoir un encodage différent est un byte[]. Donc, si vous avez besoin de données UTF-8, vous avez besoin d'un byte[]. Si vous avez une String qui contient des données inattendues, alors le problème se situe à un endroit antérieur qui a incorrectement converti des données binaires en String (c'est-à-dire qu'il utilisait le mauvais encodage).

Commentaires (4)

Utilisez byte[] ptext = String.getBytes("UTF-8&quot ;); au lieu de getBytes(). getBytes() utilise ce qu'on appelle le "codage par défaut&quot ;, qui peut ne pas être UTF-8.

Commentaires (5)