鱼C论坛

 找回密码
 立即注册
查看: 545|回复: 2

[已解决]编码问题

[复制链接]
发表于 2019-4-9 18:40:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lixiangyv 于 2019-4-9 18:42 编辑

我做了一个笔记本的一个小程序,
但是打开了一个文件,却出现了乱码。
源代码:
  1. #!/usr/bin/env python
  2. # _*_ coding:utf-8 _*_
  3. __author__ = 'junxi'
  4. from tkinter import *
  5. from tkinter.messagebox import *
  6. from tkinter.filedialog import *
  7. from tkinter.simpledialog import *
  8. import os
  9. def author():
  10.     showinfo('作者信息', '本软件由君惜完成')

  11. def about():
  12.     showinfo('版权信息.Copyright', '本软件版权为君惜所有')

  13. def openfile():
  14.     global filename
  15.     filename = askopenfilename(defaultextension='.txt')
  16.     if filename == '':
  17.         filename = None
  18.     else:
  19.         root.title('FileName: ' + os.path.basename(filename))
  20.         textPad.delete(1.0, END)
  21.         f = open(filename,'r')
  22.         textPad.insert(1.0, f.read())
  23.         f.close()

  24. def new():
  25.     global filename
  26.     root.title('未命名文件')
  27.     textPad.delete(1.0, END)

  28. def save():
  29.     global filename
  30.     try:
  31.         f = open(filename, 'w')
  32.         msg = textPad.get(1.0, END)
  33.         f.write(msg)
  34.         f.close()
  35.     except:
  36.         save_as()

  37. def save_as():
  38.     f = asksaveasfilename(initialfile='未命名.txt', defaultextension='.txt')
  39.     global filename
  40.     filename = f
  41.     fh = open(f, 'w')
  42.     msg = textPad.get(1.0, END)
  43.     fh.write(msg)
  44.     fh.close()
  45.     root.title('FileName: ' + os.path.basename(f))

  46. def cut():
  47.     textPad.event_generate('<<Cut>>')

  48. def copy():
  49.     textPad.event_generate('<<Copy>>')

  50. def paste():
  51.     textPad.event_generate('<<Paste>>')

  52. def redo():     # 重做
  53.     textPad.event_generate('<<Redo>>')

  54. def undo():     # 撤销
  55.     textPad.event_generate('<<Undo>>')

  56. def select_all():
  57.     textPad.tag_add('sel', '1.0', END)
  58. def search():
  59.     topsearch = Toplevel(root)
  60.     topsearch.geometry('300x30+200+250')
  61.     label1 = Label(topsearch, text='Find')
  62.     label1.grid(row=0, column=0, padx=5)
  63.     entry1 = Entry(topsearch, width=20)
  64.     entry1.grid(row=0, column=1, padx=5)
  65.     button1 = Button(topsearch, text='查找')
  66.     button1.grid(row=0, column=2, padx=10)

  67. root = Tk()
  68. root.title('记事本')
  69. root.geometry("800x500+100+100")

  70. # 创建菜单
  71. menubar = Menu(root)
  72. root.config(menu = menubar)

  73. # 文件菜单
  74. filemenu = Menu(menubar)
  75. filemenu.add_command(label='新建', accelerator='Ctrl + N', command=new)
  76. filemenu.add_command(label='打开', accelerator='Ctrl + O', command=openfile)
  77. filemenu.add_command(label='保存', accelerator='Ctrl + S', command=save)
  78. filemenu.add_command(label='另存为', accelerator='Ctrl + Shift + S', command=save_as)
  79. menubar.add_cascade(label= '文件', menu = filemenu)       # 关联

  80. # 编辑菜单
  81. editmenu = Menu(menubar)
  82. editmenu.add_command(label='撤销', accelerator='Ctrl + Z', command=undo)
  83. editmenu.add_command(label='重做', accelerator='Ctrl + Y', command=redo)
  84. editmenu.add_separator()
  85. editmenu.add_command(label='剪切', accelerator='Ctrl + X', command=cut)
  86. editmenu.add_command(label='复制', accelerator='Ctrl + C', command=copy)
  87. editmenu.add_command(label='粘贴', accelerator='Ctrl + V', command=paste)
  88. editmenu.add_separator()
  89. editmenu.add_command(label='查找', accelerator='Ctrl + F', command=search)
  90. editmenu.add_command(label='全选', accelerator='Ctrl + A', command=select_all)
  91. menubar.add_cascade(label='编辑', menu = editmenu)

  92. # 关于
  93. aboutmenu = Menu(menubar)
  94. aboutmenu.add_command(label='作者', command=author)
  95. aboutmenu.add_command(label='版权', command=about)
  96. menubar.add_cascade(label='关于', menu = aboutmenu)

  97. # 工具栏
  98. toolbar = Frame(root, height=25, bg='Light sea green')

  99. # 按钮
  100. shortButton = Button(toolbar, text='打开', command=openfile)
  101. shortButton.pack(side=LEFT, padx=5, pady=5)
  102. shortButton = Button(toolbar, text='保存', command=save)
  103. shortButton.pack(side=LEFT)
  104. toolbar.pack(expand=NO, fill=X)         # 显示

  105. # 状态栏
  106. status = Label(root, text='Ln20', bd=1, relief=SUNKEN, anchor=W)
  107. status.pack(side=BOTTOM, fill=X)

  108. # 行号和文本编辑
  109. linelabel = Label(root, width=2, bg='antique white')
  110. linelabel.pack(side=LEFT, fill=Y)
  111. textPad = Text(root, undo=True)
  112. textPad.pack(expand=YES, fill=BOTH)

  113. # 右边滚动下拉条
  114. scroll = Scrollbar(textPad)
  115. textPad.config(yscrollcommand=scroll.set)
  116. scroll.config(command=textPad.yview)
  117. scroll.pack(side=RIGHT, fill=Y)

  118. root.mainloop()
复制代码

但是打开了一个文件,却出现了乱码。
那个文件的东西是下面:
  1. import easygui as g
  2. import sys

  3. try:
  4.     temp = g.filesavebox(title="创建", default="project.py")
  5.     name = open(temp, "w")
  6.     temp = g.textbox(msg="请输入添加的文字:", title="添加文字")
  7.     name.write(temp)
  8.     name.close()
  9. except:
  10.     sys.exit(0)
复制代码

打开的确是这个:
最佳答案
2019-4-9 20:35:38
1.png

f = open(filename,'r', encoding='utf-8')
3.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-4-9 19:12:29 | 显示全部楼层
没人理我
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-9 20:35:38 | 显示全部楼层    本楼为最佳答案   
1.png

f = open(filename,'r', encoding='utf-8')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-17 02:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表