JDP packets with multibyte characters are broken since the code in JdpPacketWriter looks at the String length when adding entries instead of encoding the byte length. I.e. the code looks like this: public void addEntry(String entry) throws IOException { pkt.writeShort(entry.length()); byte[] b = entry.getBytes("UTF-8"); pkt.write(b); } It should look like this: public void addEntry(String entry) throws IOException { byte[] b = entry.getBytes("UTF-8"); pkt.writeShort(b.length); pkt.write(b); } Or even more elegantly just like this: public void addEntry(String entry) throws IOException { pkt.writeUTF(entry); } ...as it seems that writeUTF in DataOutputStream actually encodes the length in a short in the beginning of the array. (This last version is how the JDPServer we use for testing in JMC is coded.)