Browse Source

IE9 encoding fixed

master
Nikita 11 years ago
parent
commit
6ee6da941b
  1. 6
      src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java
  2. 1
      src/main/java/com/corundumstudio/socketio/protocol/PacketEncoder.java

6
src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java

@ -48,16 +48,18 @@ public class PacketDecoder {
public ByteBuf preprocessJson(Integer jsonIndex, ByteBuf content) throws IOException {
String packet = URLDecoder.decode(content.toString(CharsetUtil.UTF_8), CharsetUtil.UTF_8.name());
int startPos = 0;
if (jsonIndex != null) {
// skip "d="
packet = packet.substring(2);
startPos = 2;
}
int splitIndex = packet.indexOf(":");
String len = packet.substring(0, splitIndex);
String len = packet.substring(startPos, splitIndex);
Integer length = Integer.valueOf(len);
packet = packet.substring(splitIndex+1, splitIndex+length+1);
packet = new String(packet.getBytes(CharsetUtil.ISO_8859_1), CharsetUtil.UTF_8);
return Unpooled.wrappedBuffer(packet.getBytes(CharsetUtil.UTF_8));
}

1
src/main/java/com/corundumstudio/socketio/protocol/PacketEncoder.java

@ -104,6 +104,7 @@ public class PacketEncoder {
buf.release();
// TODO optimize
packet = QUOTES_PATTERN.matcher(packet).replaceAll("\\\\\"");
packet = new String(packet.getBytes(CharsetUtil.UTF_8), CharsetUtil.ISO_8859_1);
out.writeBytes(packet.getBytes(CharsetUtil.UTF_8));
out.writeBytes(JSONP_END);

Loading…
Cancel
Save