summaryrefslogtreecommitdiffstats
path: root/pttbbs/util/pyutil/big5.py
blob: e8919f2df5a7065147f91c57574228d2c67f820c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env python

import big5_tbl

def decode(s, strip_zero=True):
    ret = u''
    b = 0
    for i in s:
    if b:
        b = (b << 8) | (ord(i))
    else:
        b = ord(i)
        if b >= 0x80:
        continue
    if (b == 0) and strip_zero:
        break
    ret += unichr(big5_tbl.b2u_table[b])
    b = 0
    return ret

def encode(u):
    ret = ''
    for i in u:
    c = big5_tbl.u2b_table[ord(i)]
    b0 = (c) & 0xff
    b1 = (c >> 8) & 0xff
    if b1:
        ret = ret + chr(b1)
    ret = ret + chr(b0)
    return ret