You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Python传入终端波斯语参数触发的UnicodeEncodeError问题

波斯语终端传参UnicodeEncodeError修复方案

问题根因

报错'charmap' codec can't encode character本质是Windows终端默认使用非UTF-8的系统编码(比如CP1256、GBK),无法正确解析波斯语这类非拉丁字符的传参。你此前给参数加.encode("utf-8")的操作会把字符串转为bytes类型,如果make_a_call函数要求接收字符串参数,反而会引发额外的类型错误,需要先去掉这部分逻辑。

修复方案

  • 临时单次修复
    运行脚本前先在终端执行命令chcp 65001,将当前终端的编码临时切换为UTF-8,之后再正常运行Python脚本即可。
  • 代码层面兼容修复
    显式对终端传参做编码转码,保证读取到的是UTF-8格式的字符串,代码修改如下:
    import sys
    # 按终端原始编码读取参数后转成UTF-8字符串
    tdf = sys.argv[1].encode(sys.stdin.encoding).decode("utf-8")
    print(make_a_call(tdf))
    
  • 全局永久修复(适合经常处理多语言字符的场景)
    1. 运行脚本前先执行环境变量设置命令:set PYTHONUTF8=1,强制Python全程使用UTF-8处理输入输出、命令行传参;或者直接用该命令启动脚本:PYTHONUTF8=1 python 你的脚本文件名.py "سلام خوبی؟"
    2. 如需彻底解决Windows终端所有编码问题,可打开控制面板→区域→管理→更改系统区域设置,勾选「Beta版:使用Unicode UTF-8提供全球语言支持」,重启电脑后所有终端默认使用UTF-8编码,不会再出现同类报错。

内容的提问来源于stack exchange,提问作者miladjurablu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 04:54:03