String nach UTF-8 kodieren

Ich habe eine Zeichenkette mit einem "ñ" Zeichen und ich habe einige Probleme mit ihr. Ich muss diesen String in die UTF-8-Kodierung umwandeln. Ich habe es auf diese Weise versucht, aber es funktioniert nicht:

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

Wie kodiere ich diesen String in UTF-8?

Wie wäre es mit der Verwendung von

ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)
Kommentare (6)
Lösung

String"-Objekte in Java verwenden die UTF-16-Kodierung, die nicht geändert werden kann.

Das Einzige, was eine andere Kodierung haben kann, ist ein "Byte[]". Wenn Sie also UTF-8-Daten benötigen, dann brauchen Sie ein "Byte[]`. Wenn Sie einen "String" haben, der unerwartete Daten enthält, dann liegt das Problem an einer früheren Stelle, die Binärdaten fälschlicherweise in einen "String" umgewandelt hat (d.h. sie hat die falsche Kodierung verwendet).

Kommentare (4)

Verwenden Sie byte[] ptext = String.getBytes("UTF-8"); anstelle von getBytes(). getBytes() verwendet die sogenannte "Standardkodierung", die nicht unbedingt UTF-8 ist.

Kommentare (5)