private static void appendMultiByteEncoded(StringBuilder sb, int value) { if (value < 0x800) { appendSingleByteEncoded(sb, (0xc0 | (value >> 6)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else if (value < 0x10000) { appendSingleByteEncoded(sb, (0xe0 | (value >> 12)), false); appendSingleByteEncoded(sb, (0x80 | ((value >> 6) & 0x3f)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else { appendSingleByteEncoded(sb, (0xf0 | (value >> 18)), false); appendSingleByteEncoded(sb, (0x80 | (value >> 12) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value >> 6) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } } }
private static StringBuilder appendEncoded(StringBuilder sb, CharSequence input, BitSet dontNeedEncoding, boolean encodeSpaceAsPlus) { int c; for (int i = 0; i < input.length(); i += Character.charCount(c)) { c = Character.codePointAt(input, i); if (c <= 127) { if (dontNeedEncoding.get(c)) { sb.append((char) c); } else { appendSingleByteEncoded(sb, c, encodeSpaceAsPlus); } } else { appendMultiByteEncoded(sb, c); } } return sb; }
private static StringBuilder lazyAppendEncoded(StringBuilder sb, CharSequence input, BitSet dontNeedEncoding, boolean encodeSpaceAsPlus) { int c; for (int i = 0; i < input.length(); i += Character.charCount(c)) { c = Character.codePointAt(input, i); if (c <= 127) { if (dontNeedEncoding.get(c)) { if (sb != null) { sb.append((char) c); } } else { if (sb == null) { sb = lazyInitStringBuilder(input, i); } appendSingleByteEncoded(sb, c, encodeSpaceAsPlus); } } else { if (sb == null) { sb = lazyInitStringBuilder(input, i); } appendMultiByteEncoded(sb, c); } } return sb; }
private final static void appendMultiByteEncoded(StringBuilder sb, int value) { if (value < 0x800) { appendSingleByteEncoded(sb, (0xc0 | (value >> 6)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else if (value < 0x10000) { appendSingleByteEncoded(sb, (0xe0 | (value >> 12)), false); appendSingleByteEncoded(sb, (0x80 | ((value >> 6) & 0x3f)), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } else { appendSingleByteEncoded(sb, (0xf0 | (value >> 18)), false); appendSingleByteEncoded(sb, (0x80 | (value >> 12) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value >> 6) & 0x3f), false); appendSingleByteEncoded(sb, (0x80 | (value & 0x3f)), false); } } }
private static StringBuilder appendEncoded(StringBuilder sb, CharSequence input, BitSet dontNeedEncoding, boolean encodeSpaceAsPlus) { int c; for (int i = 0; i < input.length(); i+= Character.charCount(c)) { c = Character.codePointAt(input, i); if (c <= 127) if (dontNeedEncoding.get(c)) sb.append((char) c); else appendSingleByteEncoded(sb, c, encodeSpaceAsPlus); else appendMultiByteEncoded(sb, c); } return sb; }