02. september 2013 - 18:18
Der er
7 kommentarer og 1 løsning
java charbuffer decoding
Jeg sidder og forsøger at decode en bytebuffer med en vilkårlig charset, men java printer ikke noget ud, nogen som kan hjælpe?
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
02. september 2013 - 20:40
#1
Kan du vise noget kode? Husk at samme bytes kan vaere valide chars i mere end en encoding, saa uden kendskab til encoding kan man ikke vaere sikker paa at kunne decode.
02. september 2013 - 21:33
#2
ByteBuffer packbbheader = null; ByteBuffer packbbdata = null; Charset iso8859 = StandardCharsets.ISO_8859_1; Charset us_ascii = StandardCharsets.US_ASCII; Charset utf_16 = StandardCharsets.UTF_16; Charset utf_16be = StandardCharsets.UTF_16BE; Charset utf_16le = StandardCharsets.UTF_16LE; Charset utf_8 = StandardCharsets.UTF_8; Charset[] stdcs = {iso8859, us_ascii, utf_16, utf_16, utf_16be, utf_16le, utf_8}; CharBuffer cbuffer = null; int i = -1; String packdata = new String(); String packheader = new String(); boolean run = true; Packet pack = new Packet(); pack = captor.getPacket(); try { while (run) { if (pack != null) { packbbheader = ByteBuffer.allocate(pack.header.length); packbbdata = ByteBuffer.allocate(pack.data.length); packbbheader.put(pack.header); packbbdata.put(pack.data); for (i = 0; i < stdcs.length; i++) { cbuffer = stdcs[i].decode(packbbheader); System.out.println("break"); System.out.println(cbuffer); } Det er pågældende kode, som bruges, pcap api'et ville godt tidligere, men så begyndte den at vise underlige tegn, også gik jeg til Charsets osv.
02. september 2013 - 21:37
#3
Jeg ændrede lige for løkken til at printe "break" + i, og den looper hele tiden. Dog kan jeg se den stadig printer stadig tom linie ved cbuffer.
08. september 2013 - 04:37
#4
Jeg forstaar ikke koden. Hvorfor bruge ByteBuffer og ikke bare en helt normal String constructor? Skal deu ikke modtage packet inden i while loekken?
08. september 2013 - 04:37
#5
Og hvad er pointen med at decode med flere charset? (du kan sagtens faa en valid string med flere charset)
03. november 2013 - 17:32
#6
Det var simpelthen fordi jeg brugte en java pcap wrapper til at hente data fra ip-pakker. Jeg fik ulæselig data, og konkluderede at de var dekodet i en anden slags font. Jeg har ikke fundet ud af om de var det, men jeg går ud fra at det er utf-8. Jeg fandt en anden løsning. Det var til et projekt med en java wrapper til pcap, hvor jeg fik en masse ulæselig data, men jeg brugte jnetpcap istedet, der får kan jeg både få data i hex & utf-8.
03. november 2013 - 17:34
#7
Jeg fandt også jchardet & juniversalcharset api til at bruge andre charsets en java standard, hvis nogle skulle gå til den her tråd.
04. november 2013 - 03:12
#8
Java understoetter da langt de fleste charset out of the box.
Kurser inden for grundlæggende programmering