หรือใช้ทำอะไรอีกต่าง ๆ มามายให้ดูกันครับ
งานส่วนใหญ่ที่ใช้การ encode นี้ส่วนใหญ่จะใช้เพื่อแปลงภาษาไทย เป็นส่วนใหญ่
เนื่องจากภาษาไทยนั้น ไม่ใช่พื้นฐานของภาษาที่คอมพิวเตอร์จะถอดรหัสได้ทันที และ
มาตรฐานที่มากมายในการเข้าถึง และแปลงรหัส เพื่อให้ได้ ภาษาที่ถูกต้อง
ตัวอย่างเล็ก ๆ เอาไปลอง run แล้วพอจะเห็นภาพนะครับ ...
# -*- utf-8 -*-
def encode32(src):
return ''.join(["%06x" % ord(x) for x in src])
def encode16(src):
return ''.join(["%04x" % ord(x) for x in src])
def encode16char(src, ch='%'):
return ''.join(['%(ch)s%(i)s%(ch)s%(j)s' %{'i':("%04x" % ord(x))[:2].upper(), 'j':("%04x" % ord(x))[2:].upper(), 'ch':ch} for x in src])
def encode8(src):
return ''.join(["%02x" % ord(x) for x in src])
def decode16(src):
n = (len(src)+1)/4
return "".join( [unichr(int(src[i*4:i*4+4],16)) for i in range(n)])
def isthaistr(s):
try:
s = s.decode('tis-620')
except:
pass
return any( ord( c ) > 255 for c in s )
def encode8hexcharx(x, c='%'):
if isthaistr(x):
try:
x = x.decode('tis-620')
except Exception, e:
pass
x = x.encode('utf-8').encode('hex')
return '%(ch)s%(i)s%(ch)s%(j)s%(ch)s%(k)s' % {'i':x[:2].upper(), 'j':x[2:4].upper(), 'k':x[4:].upper(), 'ch':c}
else:
return x
def encode8hexchar(src, ch='%'):
return ''.join([encode8hexcharx(x, c=ch) for x in src])
if '__main__' == __name__:
a = '00740065007300740e010e020e03'
s = decode16(a)
print 'decode16 %s >> %s' % (a, s)
a = s
s = encode16char(a)
print 'encode16char %s >> %s' % (a, s)
a = u'abc กขค 123'
s = encode8hex(unicode(a), ch='-')
print 'encodeutf8hex %s >> %s' % (a, s)
ส่วนอันนี้ก็เป็น ผลที่ได้จาก test นะครับ
decode16 00740065007300740e010e020e03 >> testกขฃ
encode16char testกขฃ >> %74%65%73%74%0E%01%0E%02%0E%03
encodeutf8hex abc กขค 123 >> abc -E0-B8-81-E0-B8-82-E0-B8-84 123