package shell func isGBK(data []byte) bool { length := len(data) var i int = 0 for i < length { if data[i] <= 0x7f { i++ continue } else { if data[i] >= 0x81 && data[i] <= 0xfe && data[i+1] >= 0x40 && data[i+1] <= 0xfe && data[i+1] != 0xf7 { i += 2 continue } else { return false } } } return true } func preNUm(data byte) int { var mask byte = 0x80 var num int = 0 for i := 0; i < 8; i++ { if (data & mask) == mask { num++ mask = mask >> 1 } else { break } } return num } func isUtf8(data []byte) bool { i := 0 for i < len(data) { if (data[i] & 0x80) == 0x00 { i++ continue } else if num := preNUm(data[i]); num > 2 { i++ for j := 0; j < num-1; j++ { if (data[i] & 0xc0) != 0x80 { return false } i++ } } else { return false } } return true }