[Bug] Garbled characters (mojibake) in CLI output since v2.1.86

Resolved 💬 11 comments Opened Mar 29, 2026 by acosmi-fushihua Closed Jul 11, 2026

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:

  1. Use Claude Code in a Chinese-language conversation
  2. Ask it to generate longer text outputs containing CJK

characters

  1. 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:

  1. Use Claude Code in a Chinese-language conversation
  2. Ask it to generate longer text outputs containing CJK

characters

  1. 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_

View original on GitHub ↗

This issue has 11 comments on GitHub. Read the full discussion on GitHub ↗