gbk,utf-8,unicode编码转换

2018-06-01 15:21:40 浏览数 (1)

1、将字符串'024f'转化为unicode字符,先将字符转化为16进制整数

代码语言:javascript复制
code = int('024f',base=16)
print '%x'%code,'x'%code

输出结果:24f 024f,一般选择后者处理凑足偶数字节 转化unicode编码

代码语言:javascript复制
unichr(code)

运行得到unicode编码

代码语言:javascript复制
u'u024f'
代码语言:javascript复制
uc = unichr(code)
print uc, type(uc)

输出字符,类型,特别注意unicode类型,处理起来有点不同,两个字节算一个字符

代码语言:javascript复制
ɏ,unicode

转gb18030编码

代码语言:javascript复制
uc.encode('gb18030')
代码语言:javascript复制
'x810xab6'
代码语言:javascript复制
gbk = uc.encode('gb18030')
print  type(gbk)

类型是str

代码语言:javascript复制
<type 'str'>
代码语言:javascript复制
gbk = uc.encode('gb18030')
gbkcode = str()
for el in gbk:
    gbkcode  = 'x'%ord(el)
print gbkcode
代码语言:javascript复制
  8130ab36
代码语言:javascript复制
  uc.encode('utf-8')

输出

代码语言:javascript复制
    'xc9x8f'

解码

代码语言:javascript复制
utf8 = uc.encode('utf-8')
utf8.decode('utf-8')

输出

代码语言:javascript复制
u'u024f'
代码语言:javascript复制
gbk.decode('gb18030')

输出

代码语言:javascript复制
u'u024f'
代码语言:javascript复制
代码语言:javascript复制
def writeTxt(fdir, info):
    print '%s\f0.txt'�ir
    f=open('%s\f0.txt'�ir,'a')
    f.write(info)
    f.write('n')
    f.close()
def getcosins(wordcode, gbkflag=0):
    if gbkflag == 2:
        wordcodelen = 2
    else:
        wordcodelen = len(wordcode)
    cosins = '20ffx00x'%(gbkflag, wordcodelen)
    if gbkflag == 2:
        cosins  = 'x'%ord(wordcode)
    else:
        for i in range(len(wordcode)):
            cosins  = 'x'%ord(wordcode[i])
    writeTxt('F:zpcs', cosins)
    return cosins
def writegbkucode(uccode):
    code = int(uccode,base=16)
    print code
    uc = unichr(code)
    print uc
    getcosins(uc, 2)
    ucgbk = uc.encode('gb18030')
    getcosins(ucgbk)
writegbkucode('024f')

0 人点赞