|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
使用open BIF 打开文件时发生编码问题:
f.write(text.get("1.0", END)) if f.writable() else showerror("错误", "文件保存失败")
~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'gbk' codec can't encode character '\u4ceb' in position 55: illegal multibyte sequence
有什么办法检测文件编码并以特定编码打开文件吗?(python默认GBK)
鱼油这是典型的 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'(? 代替)
复制代码
|
|