/install charset-fix
Windows Character Encoding Fix for AI Agents
Fix garbled Chinese/Unicode text output when running AI agents on Windows through POSIX-compatible shells.
Problem
When AI agents run commands on Windows through POSIX shells (Git Bash, MSYS2, BusyBox, or any Unix-like shell layer), text output containing Chinese or extended Unicode characters often appears garbled:
$ python3 -c "print('中文测试')"
���IJ��� ← garbled
$ echo "中文测试"
中文测试 ← correct
Root Cause
| Layer | Encoding | Why |
|---|---|---|
| Windows system | GBK/GB2312 (CP936) | Default code page for Chinese Windows |
| Python 3 | GBK | sys.stdout.encoding auto-detects system code page |
| PowerShell (powershell.exe) | GB2312 | [Console]::OutputEncoding defaults to system CP |
| cmd.exe | GBK | Native Windows command processor |
| POSIX shell (Git Bash, BusyBox, MSYS2) | UTF-8 | Expects UTF-8 input |
| PowerShell Core (pwsh.exe) | UTF-8 | ✅ Defaults to UTF-8, no fix needed |
The mismatch: Windows-native tools output GBK-encoded text, but the POSIX shell terminal reads it as UTF-8, producing garbled characters.
Quick Fix
Python
PYTHONIOENCODING=utf-8 python3 -c "print('中文测试 ✅')"
Set it for the whole session:
export PYTHONIOENCODING=utf-8
python3 script.py
PowerShell (Windows PowerShell, not Core)
powershell.exe -NoProfile -Command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; Write-Host '中文测试'"
cmd.exe / Windows native tools
Use Python's subprocess as a GBK→UTF-8 bridge:
PYTHONIOENCODING=utf-8 python3 -c "
import subprocess
r = subprocess.run(['cmd.exe', '/c', 'systeminfo | findstr 系统'],
capture_output=True, text=True, encoding='gbk')
print(r.stdout)
"
Code-level fix (Python)
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
Verification
PYTHONIOENCODING=utf-8 python3 -c "print('charset-fix: 中文测试成功 ✅')"
Expected: charset-fix: 中文测试成功 ✅
How It Works
| Fix | Mechanism |
|---|---|
PYTHONIOENCODING=utf-8 |
Overrides Python's stdout encoding detection |
[Console]::OutputEncoding = UTF8 |
Sets PowerShell's console output to UTF-8 |
subprocess(..., encoding='gbk') |
Decodes cmd.exe output correctly, then emits as UTF-8 |
Compatibility
| Platform | Status |
|---|---|
| Windows + Git Bash | ✅ Works |
| Windows + BusyBox | ✅ Works |
| Windows + MSYS2 | ✅ Works |
| Windows + WSL | ✅ Works |
| macOS / Linux | ⬜ Not needed |
| PowerShell Core (pwsh) | ⬜ Not needed |
Works with: Claude Code, Codex CLI, Cline, Cursor, GitHub Copilot, OpenClaw agents.
Debugging
# Check code page
powershell.exe -NoProfile -Command "chcp"
# Check Python encoding
python3 -c "import sys; print(sys.stdout.encoding)"
# Test raw shell output
echo "中文测试"
License
MIT
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install charset-fix - 安装完成后,直接呼叫该 Skill 的名称或使用
/charset-fix触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Charset Fix 是什么?
Fix Chinese/Unicode character encoding issues when running AI agents on Windows via POSIX shells (Git Bash, MSYS2, WSL, BusyBox, etc.). Handles Python, Power... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 24 次。
如何安装 Charset Fix?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install charset-fix」即可一键安装,无需额外配置。
Charset Fix 是免费的吗?
是的,Charset Fix 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Charset Fix 支持哪些平台?
Charset Fix 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(windows)。
谁开发了 Charset Fix?
由 gkd2323c(@gkd2323c)开发并维护,当前版本 v1.0.0。