[Bug] Garbled characters (mojibake) in CLI output since v2.1.86
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Environment:
- Claude Code version: 2.1.86+
- OS: macOS (Darwin 25.3.0)
- Terminal: [iTerm2 / Terminal.app / VS Code Terminal]
- Shell: zsh
- Locale: UTF-8
Description:
Since upgrading to v2.1.86, Chinese characters in
Claude's text output are intermittently rendered as ��
(U+FFFD replacement characters). This happens in the
conversation output (not in file writes — generated code
files are correct).
Example:
- Expected:
LLM 调用工具 "dashscope_web_search" - Actual:
LLM ��用工具 "dashscope_web_search"
The corrupted character is 调 (U+8C03), a common CJK
character. It appears to be a multi-byte UTF-8
truncation issue where a 3-byte sequence gets split at a
chunk boundary.
Frequency: Intermittent, occurs multiple times per
session, across different conversations. Affects only
terminal rendering — files written via Write/Edit tool
are not corrupted.
Steps to reproduce:
- Use Claude Code in a Chinese-language conversation
- Ask it to generate longer text outputs containing CJK
characters
- Observe random
��replacements in the streamed
output
Suspected cause: SSE streaming chunk boundary
splitting multi-byte UTF-8 sequences.
What Should Happen?
Environment:
- Claude Code version: 2.1.86+
- OS: macOS (Darwin 25.3.0)
- Terminal: [iTerm2 / Terminal.app / VS Code Terminal]
- Shell: zsh
- Locale: UTF-8
Description:
Since upgrading to v2.1.86, Chinese characters in
Claude's text output are intermittently rendered as ��
(U+FFFD replacement characters). This happens in the
conversation output (not in file writes — generated code
files are correct).
Example:
- Expected:
LLM 调用工具 "dashscope_web_search" - Actual:
LLM ��用工具 "dashscope_web_search"
The corrupted character is 调 (U+8C03), a common CJK
character. It appears to be a multi-byte UTF-8
truncation issue where a 3-byte sequence gets split at a
chunk boundary.
Frequency: Intermittent, occurs multiple times per
session, across different conversations. Affects only
terminal rendering — files written via Write/Edit tool
are not corrupted.
Steps to reproduce:
- Use Claude Code in a Chinese-language conversation
- Ask it to generate longer text outputs containing CJK
characters
- Observe random
��replacements in the streamed
output
Suspected cause: SSE streaming chunk boundary
splitting multi-byte UTF-8 sequences.
Error Messages/Logs
Steps to Reproduce
2.1.86
Claude Model
None
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.86
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
This issue has 11 comments on GitHub. Read the full discussion on GitHub ↗