Life Since 1985

Happy Hacking

115诡异的乱码

今天下载115网盘的资源,文件名一堆乱码,以前就出现过这种状况。其实也不是乱码,仔细看了一下应该是用%分隔的unicode码。反正也是闲的没事自己就用python写了一个恢复正常文件名的小程序,还算比较简单,主要就是读取文件名,然后将文件名按照%分隔,再手动设置一个溢出判断,超出两个字符就算溢出,溢出的部分和在文件名中的位置偏移另存,然后转换为字符就行了,最后将转换完的文件名存储。

python确实比较方便啊,不过十几二十行的代码而已,要是这个程序用c 或者java写的话……

# -*- coding:gb2312 -*-
F = open('datafile')
s = F.readlines()
s = [c.rstrip() for c in s]
ls = [c.split('%') for c in s]
result  = []
for c in ls:
    del c[0]
    isLarge = False
    sTag = None
    nTag = None
    n = -1
    for i in c:
        n = n + 1
        if len(i) > 2:
            isLarge = True
            sTag = i[2:]
            c[n] = i[:2]
            nTag = n + 1
            #print sTag
            #print nTag
    c = ['0x' + p for p in c]
    c = [eval(p) for p in c]
    c = [chr(p) for p in c]
    if isLarge == True:
        c.insert(nTag, sTag)
    result.append(''.join(c) + '\n')
    #print c

F.close()
F = open('myfile', 'w')
F.writelines(result)
'''
for i in result:
    print i
'''