Хотелось бы что-то вроде:
String s = new String( bytearray, 0, lenOfValidData, "US-ASCII");
делать то, что вы хотите (изменить кодировку на подходящую кодировку)?
Обновление:
Исходя из ваших комментариев, вы можете попробовать:
socket.receive(packet);
String strPacket = new String( packet.getData(), 0, packet.getLength(), "US-ASCII");
receiver.onReceive( strPacket);
Я недостаточно знаком с поддержкой дейтаграмм Java, чтобы знать, возвращает ли packet.getLength()
усеченную длину или исходную длину дейтаграммы (до усечения, чтобы поместиться в приемный буфер). Может быть безопаснее создать строку следующим образом:
String strPacket = new String( packet.getData(),
0,
Math.min( packet.getLength(), packet.getData().length),
"US-ASCII");
Опять же, это может быть ненужным.