使用Langchain TextLoader读取文件遇编码错误,如何解决?
解决TextLoader读取文件的Unicode解码错误
直接解决方案:指定UTF-8编码加载文件
你的判断正确,给TextLoader显式指定encoding='utf-8'参数即可解决该问题,修改后的完整代码如下:
from langchain.embeddings.openai import OpenAIEmbeddings from langchain.text_splitter import CharacterTextSplitter from langchain.vectorstores import FAISS from langchain.document_loaders import TextLoader # 加载文件时指定UTF-8编码 loader = TextLoader("elon_musk.txt", encoding='utf-8') documents = loader.load() text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0) docs = text_splitter.split_documents(documents) # 后续创建向量库的完整流程示例 embeddings = OpenAIEmbeddings() vector_store = FAISS.from_documents(docs, embeddings)
备选处理方案(若UTF-8仍报错)
如果指定utf-8后仍无法解码,可能文件是带BOM的UTF-8编码,可尝试:
loader = TextLoader("elon_musk.txt", encoding='utf-8-sig')
若临时允许丢失少量特殊字符(不推荐),可添加错误忽略参数:
loader = TextLoader("elon_musk.txt", encoding='utf-8', errors='ignore')
错误原因说明
报错中的'charmap' codec can't decode byte是因为Windows环境下TextLoader默认使用系统编码(如cp1252),而你的文件包含该编码无法识别的特殊字符。显式指定UTF-8编码,即可匹配文件实际编码格式,完成正常读取。
内容的提问来源于stack exchange,提问作者Rito
相关产品推荐
相关产品推荐

