修复ByteBuffer Utility.encodeUTF8的bug
This commit is contained in:
@@ -1969,6 +1969,14 @@ public final class Utility {
|
|||||||
if (buf.remaining() < 2) buf = buffer2;
|
if (buf.remaining() < 2) buf = buffer2;
|
||||||
buf.put((byte) (0xc0 | (c >> 6)));
|
buf.put((byte) (0xc0 | (c >> 6)));
|
||||||
buf.put((byte) (0x80 | (c & 0x3f)));
|
buf.put((byte) (0x80 | (c & 0x3f)));
|
||||||
|
} else if (Character.isSurrogate(c)) { //连取两个
|
||||||
|
if (buf.remaining() < 4) buf = buffer2;
|
||||||
|
int uc = Character.toCodePoint(c, chars[i + 1]);
|
||||||
|
buf.put((byte) (0xf0 | ((uc >> 18))));
|
||||||
|
buf.put((byte) (0x80 | ((uc >> 12) & 0x3f)));
|
||||||
|
buf.put((byte) (0x80 | ((uc >> 6) & 0x3f)));
|
||||||
|
buf.put((byte) (0x80 | (uc & 0x3f)));
|
||||||
|
i++;
|
||||||
} else {
|
} else {
|
||||||
if (buf.remaining() < 3) buf = buffer2;
|
if (buf.remaining() < 3) buf = buffer2;
|
||||||
buf.put((byte) (0xe0 | ((c >> 12))));
|
buf.put((byte) (0xe0 | ((c >> 12))));
|
||||||
@@ -1976,8 +1984,8 @@ public final class Utility {
|
|||||||
buf.put((byte) (0x80 | (c & 0x3f)));
|
buf.put((byte) (0x80 | (c & 0x3f)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (buffer2 != null) buffer2.flip();
|
if (buf != null) buf.flip();
|
||||||
return buffer2;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getTypeDescriptor(java.lang.reflect.Type type) {
|
public static String getTypeDescriptor(java.lang.reflect.Type type) {
|
||||||
|
|||||||
Reference in New Issue
Block a user