import windnd
def dragged_files(files): myopenitem=''.join((item.decode('gbk') for item in files)) global filename filename = myopenitem if filename == '': filename = None else: root.title('Rogabet notepad ' + os.path.basename(filename)) textPad.delete(1.0, END) f = open(filename, 'r') f2 = open(file=filename, mode='rb') import chardet bimabima = f2.read() resultbima = chardet.detect(bimabima) resultbima2 = str(resultbima) print(resultbima2) if '-8' in resultbima2: showinfo('notice', '此文件是UTF-8编码,即将使用转码打开.') print(resultbima2) oldfile2 = filename global newfile2 # newfile2 = asksaveasfilename(initialfile='utf8-ansi编码.txt', defaultextension='.txt') fp_ansi = open('utf8_ansi.txt', 'wb') # 转码后输出的文件 fp_utf8 = open(oldfile2, 'rb') # 待转码的文件 data = "" data = fp_utf8.read() data = data.decode('utf-8') # 以二进制格式读入的数据需要先转码(转为内部码)才可以继续转换 data = data.encode('mbcs', errors='ignore') # 关键,将内部码再次编码 fp_ansi.write(data) # 写入文件 fp_ansi.close() fp_utf8.close() f3 = open('utf8_ansi.txt', 'r') textPad.insert(1.0, f3.read()) if '-16' in resultbima2: showinfo('notice', '此文件是UTF-16-unicode编码,即将使用转码打开.') print(resultbima2) oldfile3 = filename global newfile3 # newfile3 = asksaveasfilename(initialfile='unicode-ansi编码.txt', defaultextension='.txt') fp_ansi = open('unicode_ansi.txt', 'wb') # 转码后输出的文件 fp_utf16 = open(oldfile3, 'rb') # 待转码的文件 data = "" data = fp_utf16.read() data = data.decode('utf-16') # 以二进制格式读入的数据需要先转码(转为内部码)才可以继续转换 data = data.encode('mbcs', errors='ignore') # 关键,将内部码再次编码 fp_ansi.write(data) # 写入文件 fp_ansi.close() fp_utf16.close() f3 = open('unicode_ansi.txt', 'r') textPad.insert(1.0, f3.read()) else: textPad.insert(1.0, f.read()) f.close() windnd.hook_dropfiles(root,func=dragged_files)