2013-05-23 6 views
6

zu lesen Ich mag dieseswelche Art von String-Präfix x verwendet und wie es

"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL" 

eine Zeichenfolge haben, wenn ich es in Browser-Konsole setzen, wird es automatisch etwas anderes:

"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL" 
"'ö,úìHL" 

wenn ich chatAt(x) über diese Saite zu tun, die ich erhalten:

"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL".charAt(0) 
"'" 
"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL".charAt(1) 
"" 
"\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL".charAt(2) 
"ö" 

das ist, was ich will.

Jetzt möchte ich ein Java-Programm implementieren, die die Zeichenfolge auf die gleiche Weise wie im Browser liest.

Das Problem ist, Java erkennt nicht, wie diese Zeichenfolge codiert ist. Stattdessen behandelt es es als eine normale Zeichenfolge:

"\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".charAt(0) == '\' 
"\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".charAt(1) == 'x' 
"\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".charAt(2) == '2' 

Welche Codierung ist diese Zeichenfolge codiert? Welche Art der Codierung verwendet das Präfix \x? Gibt es eine Möglichkeit, es richtig zu lesen (das gleiche Ergebnis wie im Browser erhalten)?

Update: Ich habe eine Lösung gefunden -> Ich denke, es ist nicht die beste, aber es funktioniert für mich:

StringEscapeUtils.unescapeJava("\\x27\\x18\\xf6,\\x03\\x12\\x8e\\xfa\\xec\\x11\\x0dHL".replace("\\x", "\\u00")) 

Ihnen allen für Ihre Antworten danken :) besonders Ricardo Cacheira

Thank

Sie
+1

[this] (http://stackoverflow.com/questions/3613759/x-escape-in-java) könnte hilfreich sein? –

Antwort

7

\x03 ist die hexadezimale ASCII-Wert von char

so folgt aus: "\x30\x31" i s die gleiche wie: "01"

sehen, dass Seite: http://www.asciitable.com

Eine andere Sache ist, wenn Sie Ihre Zeichenfolge ohne Anführungszeichen kopieren markiert Ihre IDE wandelt jede \ zu \\

Java String Unicode-Escape so diese verwendet : "\x30\0x31" in Java ist: "\u0030\u0031";

Sie können diese Escape-Sequenz in Java String verwenden \u000a AND \u000d sollten Sie es konvertieren jeweils \r AND \n

Also das "\u0027\u0018\u00f6,\u0003\u0012\u008e\u00fa\u00ec\u0011\rHL" ist die Umwandlung für Java dafür: "\x27\x18\xf6,\x03\x12\x8e\xfa\xec\x11\x0dHL"

+0

Vielen Dank für die Antwort. Gibt es eine einfache Möglichkeit, eine Zeichenfolge mit Ascii-Codierung zu lesen? – user2375809

+0

Was meinst du mit lesen? –

+0

hmm. ich denke ich meine, es in eine normale utf-16 string umwandeln, wo string.charAt (1) == 'ö' – user2375809

1

Apache Commons bietet einen Helfer für diese :

StringEscapeUtils.unescapeJava(...) 

demaskiert alle Java-Literale im String gefunden. Zum Beispiel wird eine Folge von '\' und 'n' in ein Newline-Zeichen umgewandelt, es sei denn, vor dem '\' steht ein anderes '\'.

+0

ok ... netter Helfer passt aber nicht zu Ihrer Anforderung –

Verwandte Themen