diff options
Diffstat (limited to 'modules/mahonia/gbk.go')
-rw-r--r-- | modules/mahonia/gbk.go | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/modules/mahonia/gbk.go b/modules/mahonia/gbk.go deleted file mode 100644 index ffb13b28..00000000 --- a/modules/mahonia/gbk.go +++ /dev/null @@ -1,78 +0,0 @@ -package mahonia - -// Converters for GBK encoding. - -func init() { - RegisterCharset(&Charset{ - Name: "GBK", - Aliases: []string{"GB2312"}, // GBK is a superset of GB2312. - NewDecoder: func() Decoder { - return decodeGBKRune - }, - NewEncoder: func() Encoder { - return encodeGBKRune - }, - }) -} - -func decodeGBKRune(p []byte) (r rune, size int, status Status) { - if len(p) == 0 { - status = NO_ROOM - return - } - - b := p[0] - if b < 128 { - return rune(b), 1, SUCCESS - } - - if len(p) < 2 { - status = NO_ROOM - return - } - - c := uint16(p[0])<<8 + uint16(p[1]) - r = rune(gbkToUnicode[c]) - if r == 0 { - r = gbkToUnicodeExtra[c] - } - - if r != 0 { - return r, 2, SUCCESS - } - - return 0xfffd, 1, INVALID_CHAR -} - -func encodeGBKRune(p []byte, r rune) (size int, status Status) { - if len(p) == 0 { - status = NO_ROOM - return - } - - if r < 128 { - p[0] = byte(r) - return 1, SUCCESS - } - - if len(p) < 2 { - status = NO_ROOM - return - } - - var c uint16 - if r < 0x10000 { - c = unicodeToGBK[r] - } else { - c = unicodeToGBKExtra[r] - } - - if c != 0 { - p[0] = byte(c >> 8) - p[1] = byte(c) - return 2, SUCCESS - } - - p[0] = 0x1a - return 1, INVALID_CHAR -} |