Python3读取波斯语TXT拆分单词打印报UnicodeEncodeError如何解决
根因说明
这个报错本质不是读取文件的问题,是Windows系统控制台默认使用GBK等本地字符集,无法编码波斯语这类Unicode字符,执行print操作输出到控制台时触发编码错误。你之前使用的win-unicode-console包已停止维护,不兼容Python3.6+版本,因此不生效。
可行解决方案
- 方案1:临时修改控制台编码
运行Python脚本前,先在当前cmd/powershell窗口执行命令chcp 65001,将控制台字符集切换为UTF-8,再运行脚本即可正常打印。 - 方案2:代码内指定标准输出编码(Python3.7+适用,无需修改控制台配置)
在代码开头添加以下内容即可:import sys sys.stdout.reconfigure(encoding='utf-8') - 方案3:输出到文件验证结果(无需改动编码配置)
如果不需要直接在控制台查看结果,可将拆分后的单词列表写入UTF-8编码的文件中查看,示例代码:with open('output_result.txt', 'w', encoding='utf-8') as f: for word in text_list: f.write(f"{word}\n")
代码优化建议
你当前的代码可以简化,且单词拆分逻辑可优化:
str.split()不带参数时会自动按任意空白字符(空格、换行符、制表符等)拆分,同时自动过滤连续空白产生的空字符串,比split(' ')更适合拆分单词split方法本身已经返回列表,不需要循环逐个append到新列表
简化后的读取代码如下:
with open('random.txt', 'r', encoding='utf-8') as f: text_list = f.read().split() # 后续打印或存储逻辑
内容的提问来源于stack exchange,提问作者user10025477
相关产品推荐
相关产品推荐

