in ch-commons-charset/src/main/java/com/cloudhopper/commons/charset/ModifiedUTF8Charset.java [177:208]
static public int calculateByteLength(CharSequence charSeq, char[] charBuffer, int charOffset, int charLength) {
int c = 0;
int byteLength = 0;
int charPos = charOffset; // start at char offset
int charAbsLength = charPos + charLength;
if (charBuffer == null) {
if (charSeq == null) {
return 0;
}
// use charSequence rather than charBuffer
charOffset = 0;
charAbsLength = charSeq.length();
}
for (; charPos < charAbsLength; charPos++) {
// optimized method for getting char to encode
if (charBuffer != null) {
c = charBuffer[charPos];
} else {
c = charSeq.charAt(charPos);
}
if ((c >= 0x0000) && (c <= 0x007F)) {
byteLength++;
} else if (c > 0x07FF) {
byteLength += 3;
} else {
byteLength += 2;
}
}
return byteLength;
}