|
鱼油这是典型的 Windows 本地编码(GBK)与文本里含有非 GBK 字符冲突导致的 UnicodeEncodeError~~
保存/写入时显式指定编码(推荐),避免走系统默认 GBK,就不会出错:
- from tkinter import END, messagebox as mb
- from tkinter import filedialog as fd
- def save_text(text_widget):
- path = fd.asksaveasfilename(defaultextension=".txt",
- filetypes=[("Text", "*.txt"), ("All Files", "*.*")])
- if not path:
- return
- data = text_widget.get("1.0", END)
- try:
- # 关键:显式指定 encoding,避免使用默认 GBK
- with open(path, "w", encoding="utf-8", newline="") as f:
- f.write(data)
- except Exception as e:
- mb.showerror("错误", f"文件保存失败:{e}")
复制代码
如果宝子必须用 GBK 保存(比如给只认 GBK 的老系统),也可以:
- with open(path, "w", encoding="gbk", errors="replace") as f:
- f.write(data)
- # errors 可选:'strict'(默认,报错)、'ignore'(丢字符)、'replace'(? 代替)
复制代码 |
|