Wie konvertieren von UTF8-string UTF16
Ich bin immer ein UTF8-string von der Verarbeitung einer Anforderung gesendet durch einen client-Anwendung. Aber der string ist wirklich UTF16. Was kann ich tun, um es in meinem lokalen string aus einem Buchstaben, gefolgt von \0
Charakter? Ich brauche, um zu konvertieren, dass die Zeichenfolge in UTF16.
Probe empfangene Zeichenfolge: S\0a\0m\0p\0l\0e
(UTF8).
Was ich will ist : Sample
(UTF16)
FileItem item = (FileItem) iter.next();
String field = "";
String value = "";
if (item.isFormField()) {
try{
value=item.getString();
System.out.println("====" + value);
}
- Ein String ist eine Folge von Zeichen. Die Codierung Fragen nur, wenn Sie transformiert einen String in bytes und Umgekehrt (beim schreiben oder Lesen zu/von einer Datei zum Beispiel). Zeig uns etwas code, weil das, was Sie erreichen wollen, ist nicht klar.
- Keine Pflicht zu tun, UTF-16 oder UTF-8 Konvertierung
- mögliche Duplikate von Encoding-Konvertierung in java
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die bytes von dem server sind nicht UTF-8, wenn Sie schauen, wie
S\0a\0m\0p\0l\0e
. Sie sind UTF-16. Sie können konvertieren UTF16-bytes, um eine Java -String
mit:Oder verwenden Sie
UTF-16LE
oderUTF-16BE
als character-set-name wenn Sie wissen, die endian-ness der byte-stream vom server kommt.Wenn Sie bereits (fälschlicherweise) aufgebaut
String
von der bytes, als ob es UTF-8 verwenden, können Sie konvertieren zu UTF-16 mit:Jedoch, wie JB Nizet Punkte aus dieser Runde Reise (Byte -> UTF-8-string -> bytes) ist potentiell verlustbehaftet, wenn die bytes nicht gültig UTF-8, um mit zu beginnen.
Schlage ich folgende Lösung:
Ich nehme an, Speicher für
line_utf16
hat Sie dynamisch oder statisch zugeteilt, die mindestens zweimal von der Größe
line_utf8.
, Wenn Sie ähnliches problem, fügen Sie bitte ein paar Sätze!