Codex 在 Windows 中文路径执行bash命令编码问题复盘

Codex 在 Windows 中文路径执行bash命令编码问题复盘

问题现象

在 Windows 环境下处理中文路径、中文文件名、中文 Markdown/PPT 等文件时,旧版 Windows PowerShell 中可能出现:

  • 中文文件名或路径在 Python 中变成 ????
  • Get-Content 或命令输出出现中文乱码
  • 明明文件存在,但脚本中 Path.exists() 返回 False
  • PPT、draw.io、Office、Python 脚本因路径被错误转码而找不到文件

脱敏示例:

text 复制代码
<项目目录>\ppt\<中文文件名>.pptx
<项目目录>\ppt\<中文文件名>v2.md

根因

主要原因是 Windows PowerShell 5.1 在中文内容经过 heredoc、管道、子进程参数传递时,编码边界不稳定。中文路径在进入 Python 或其他工具前可能已经被替换成 ????。这通常不是源文件损坏,而是 shell 编码/传参问题。

已验证环境

text 复制代码
Windows PowerShell: 5.1.26100.4768
PowerShell 7:      7.6.1
Python:            3.13.5
pwsh path:         C:\Program Files\PowerShell\7\pwsh.exe

PowerShell 7 当前编码:

text 复制代码
Console OutputEncoding: UTF-8
PowerShell OutputEncoding: UTF-8

Windows PowerShell 5.1 当前状态:

text 复制代码
Console OutputEncoding: UTF-8
PowerShell OutputEncoding: US-ASCII

解决方法

优先使用PowerShell 7:

powershell 复制代码
pwsh -NoLogo -NoProfile -Command "<command>"

检查:

powershell 复制代码
where.exe pwsh
pwsh -NoLogo -NoProfile -Command '$PSVersionTable.PSVersion; [Console]::OutputEncoding.EncodingName; $OutputEncoding.EncodingName'

涉及中文路径时,即使在 PowerShell 7 下,也优先让 Python 从文件系统枚举真实路径:

python 复制代码
from pathlib import Path

p = next(Path("ppt").glob("*v2.md"))
text = p.read_text(encoding="utf-8")

避免在旧 PowerShell heredoc 或命令参数中直接硬写中文路径。

后续准则

  • 中文路径/中文文件优先用 pwsh,避免 Windows PowerShell 5.1。
  • 文本读写显式指定 encoding="utf-8"。
  • 中文文件名优先用 Path.glob() / Path.iterdir() 获取真实路径。
  • 遇到 ???? 时,先判断是终端编码/传参问题,不要直接改源文件。

来源

codex生成

相关推荐
变量棱镜10 小时前
GPT-6.1 Terra 正式上线
gpt·ai·openai·codex
sg_knight15 小时前
Bug 定位实战:把报错丢给 Codex,它是怎么修的
chatgpt·llm·bug·openai·agent·ai编程·codex
l1m0_15 小时前
AI设计工具有哪些?Paico、Pixso AI、墨刀AI、Lovable、Codex怎么选
前端·人工智能·ai·设计·墨刀·codex·pixso
学习论之费曼学习法1 天前
无人值守AI内容矩阵实战(10):Windows 上让 Python 进程 7×24 活着
人工智能·windows·python·矩阵·powershell·进程守护
随遇而安zx2 天前
Codex CLI 介绍和使用
ai·codex·智能体
张晓宇 .2 天前
Codex 不显示新模型怎么办?GPT-6.1 Terra 上线后的排查教程:版本、自定义模型目录与 API 支持
人工智能·gpt·大模型·ai编程·codex·deepseek
枫叶丹42 天前
AI 提出科学假设之后:从数据筛选到实验验证
人工智能·chatgpt·开源·agent·codex
仙逆GPT3 天前
ChatGPT、Codex工程机制:Agent把@Transactional方法改成异步执行,为什么数据会出现部分提交?
spring boot·chatgpt·codex·chatgptplus·chatgptpro
JoePotter3 天前
从零搭建华为云 EVS 每日自动快照:hcloud + PowerShell + 邮件报告实战
华为云·自动化运维·powershell·evs·koocli·快照备份·mailozaurr