/*
* UTF8.java
*
* Created : Apr 1, 2012
*
* @author pquiring
*
*/
public class UTF8 {
public UTF8() {}
public char char16;
public boolean decode(char code[], int codelen, Buffer buffer) {
if ((code[0] & 0xe0) == 0xc0) {
if (codelen != 2) return false;
int utf16 = code[0] & 0x01f;
utf16 <<= 6;
utf16 += code[1] & 0x3f;
char16 = (char)utf16;
return true;
}
if ((code[0] & 0xf0) == 0xe0) {
if (codelen != 3) return false;
int utf16 = code[0] & 0x0f;
utf16 <<= 6;
utf16 += code[1] & 0x3f;
utf16 <<= 6;
utf16 += code[2] & 0x3f;
char16 = (char)utf16;
return true;
}
return false; //should not happen
}
public boolean isUTF8(char code) {
if ((code & 0xe0) == 0xc0) return true; //110xxxxx = 11 bits
if ((code & 0xf0) == 0xe0) return true; //1110xxxx = 16 bits
return false;
}
}