Update generation_handlers.py

修复导入知识库txt文件为ANSI编码报错问题
This commit is contained in:
CNlaojing
2025-03-17 02:50:22 +08:00
committed by GitHub
parent bda3bb9c25
commit 2c55841389
+43 -10
View File
@@ -445,20 +445,53 @@ def import_knowledge_handler(self):
emb_format = self.embedding_interface_format_var.get().strip() emb_format = self.embedding_interface_format_var.get().strip()
emb_model = self.embedding_model_name_var.get().strip() emb_model = self.embedding_model_name_var.get().strip()
self.safe_log(f"开始导入知识库文件: {selected_file}") # 尝试不同编码读取文件
import_knowledge_file( content = None
embedding_api_key=emb_api_key, encodings = ['utf-8', 'gbk', 'gb2312', 'ansi']
embedding_url=emb_url, for encoding in encodings:
embedding_interface_format=emb_format, try:
embedding_model_name=emb_model, with open(selected_file, 'r', encoding=encoding) as f:
file_path=selected_file, content = f.read()
filepath=self.filepath_var.get().strip() break
) except UnicodeDecodeError:
self.safe_log("✅ 知识库文件导入完成。") continue
except Exception as e:
self.safe_log(f"读取文件时发生错误: {str(e)}")
raise
if content is None:
raise Exception("无法以任何已知编码格式读取文件")
# 创建临时UTF-8文件
import tempfile
import os
with tempfile.NamedTemporaryFile(mode='w', encoding='utf-8', delete=False, suffix='.txt') as temp:
temp.write(content)
temp_path = temp.name
try:
self.safe_log(f"开始导入知识库文件: {selected_file}")
import_knowledge_file(
embedding_api_key=emb_api_key,
embedding_url=emb_url,
embedding_interface_format=emb_format,
embedding_model_name=emb_model,
file_path=temp_path,
filepath=self.filepath_var.get().strip()
)
self.safe_log("✅ 知识库文件导入完成。")
finally:
# 清理临时文件
try:
os.unlink(temp_path)
except:
pass
except Exception: except Exception:
self.handle_exception("导入知识库时出错") self.handle_exception("导入知识库时出错")
finally: finally:
self.enable_button_safe(self.btn_import_knowledge) self.enable_button_safe(self.btn_import_knowledge)
try: try:
thread = threading.Thread(target=task, daemon=True) thread = threading.Thread(target=task, daemon=True)
thread.start() thread.start()