Ich habe einen String mit einem "ñ" -Zeichen und ich habe einige Probleme damit. Ich muss diesen String in UTF-8-Codierung codieren. Ich habe es auf diese Weise versucht, aber es funktioniert nicht:
byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");
Wie codiere ich diesen String in utf-8?
{In,Out}putStream{Read,Writ}ers
dies für sie tun zu lassen. Ich wundere mich warum?Antworten:
String
Objekte in Java verwenden die UTF-16-Codierung, die nicht geändert werden kann.Das einzige, was eine andere Codierung haben kann, ist a
byte[]
. Wenn Sie also UTF-8-Daten benötigen, benötigen Sie einebyte[]
. Wenn Sie eine habenString
, die unerwartete Daten enthält, liegt das Problem an einer früheren Stelle, an der einige Binärdaten fälschlicherweise in a konvertiert wurdenString
(dh die falsche Codierung verwendet wurde).quelle
byte[]
, nicht sinnvollString
(es sei denn, die Codierung ist UTF-16. In diesem Fall ist sie sinnvoll, enthält jedoch immer noch unnötige Informationen).String objects in Java use the UTF-16 encoding that can't be modified.
Haben Sie eine offizielle Quelle für dieses Zitat?Wie wäre es mit
quelle
myString.getBytes(Charsets.UTF_8)
und Bytes -> String :new String(myByteArray, Charsets.UTF_8)
.StandardCharsets.UTF_8
. Verfügbar in Java 1.7+.In Java7 können Sie Folgendes verwenden:
Dies hat den Vorteil,
getBytes(String)
dass es nicht deklariertthrows UnsupportedEncodingException
.Wenn Sie eine ältere Java-Version verwenden, können Sie die Zeichensatzkonstanten selbst deklarieren:
quelle
String value = new String(myString);
.Verwenden Sie
byte[] ptext = String.getBytes("UTF-8");
anstelle vongetBytes()
.getBytes()
verwendet die sogenannte "Standardcodierung", die möglicherweise nicht UTF-8 ist.quelle
Ein Java-String wird intern immer in UTF-16 codiert - aber Sie sollten wirklich so darüber nachdenken: Eine Codierung ist eine Möglichkeit, zwischen Strings und Bytes zu übersetzen.
Wenn Sie also ein Codierungsproblem haben, ist es zu spät, es zu beheben, wenn Sie String haben. Sie müssen den Ort festlegen, an dem Sie diesen String aus einer Datei, einer Datenbank oder einer Netzwerkverbindung erstellen.
quelle
Sie können diesen Weg versuchen.
quelle
In einem Moment ging ich dieses Problem durch und schaffte es, es auf folgende Weise zu lösen
Zuerst muss ich importieren
Dann musste ich eine Konstante deklarieren, um
UTF-8
und zu verwendenISO-8859-1
Dann könnte ich es folgendermaßen verwenden:
quelle
und wenn Sie aus einer Textdatei mit der Codierung "ISO-8859-1" lesen möchten:
quelle
Ich habe den folgenden Code verwendet, um das Sonderzeichen durch Angabe des Codierungsformats zu codieren.
quelle
Eine kurze Schritt-für-Schritt-Anleitung zum Konfigurieren der NetBeans-Standardcodierung UTF-8. Im Ergebnis erstellt NetBeans alle neuen Dateien in UTF-8-Codierung.
Schrittweise Anleitung zur NetBeans-Standardcodierung UTF-8
Wechseln Sie zum Ordner etc im NetBeans-Installationsverzeichnis
Bearbeiten Sie die Datei netbeans.conf
Suchen Sie die Zeile netbeans_default_options
Fügen Sie -J-Dfile.encoding = UTF-8 in Anführungszeichen innerhalb dieser Zeile ein
(Beispiel:
netbeans_default_options="-J-Dfile.encoding=UTF-8"
)Starten Sie NetBeans neu
Sie legen die NetBeans-Standardcodierung UTF-8 fest.
Ihre netbeans_default_options können zusätzliche Parameter in Anführungszeichen enthalten. Fügen Sie in diesem Fall am Ende der Zeichenfolge -J-Dfile.encoding = UTF-8 hinzu. Trennen Sie es mit Leerzeichen von anderen Parametern.
Beispiel:
Hier ist der Link für weitere Details
quelle
Dies löste mein Problem
quelle