Skip to content
This repository was archived by the owner on May 15, 2026. It is now read-only.
This repository was archived by the owner on May 15, 2026. It is now read-only.

[BUG] Non-ASCII characters (Cyrillic, Chinese, Hindi, etc.) displayed as "?" or diamond symbols in Roo Code output #8530

Open

Description

@jwadow

Problem (one or two sentences)

When running commands that produce non-English characters (e.g., Cyrillic, Chinese, Hindi), the Roo Code agent in VS Code displays question marks (?) or diamond symbols with question marks instead of the correct characters.
The model seems to understand the text internally — only the output rendering is broken.

Context (who is affected and when)

Affects all users who use non-ASCII languages (e.g., Russian, Chinese, Hindi, Arabic, etc.) in Roo Code’s output panel.
The issue is visible when executing any command or script that outputs such text.
It does not occur in the regular terminal (CMD or PowerShell) — only in the Roo Code output terminal.

Image Image

Reproduction steps

  1. Windows 11, VS Code 1.104.3
  2. Open VS Code with Roo Code extension enabled.
  3. Ask Roo: please run command "echo hi, привет, 你好, नमस्ते"
  4. Observe the Roo Code agent output — non-English text becomes ? or �.
  5. Compare the same command in Windows CMD or PowerShell — all characters display correctly.
Image Image

Expected result

All Unicode characters (e.g., привет, 你好, नमस्ते) should display correctly, matching terminal output.

Actual result

Roo Code output panel replaces all non-ASCII characters with ? or diamond symbols with question marks, making it impossible to read multilingual output.

Variations tried (optional)

Tried both CMD and PowerShell -> both show correct characters.
Roo Code output -> broken.
Issue persists regardless of system locale or font settings.
Confirmed on Windows 10/11, VS Code latest version.

App Version

3.28.15

API Provider (optional)

None

Model Used (optional)

No response

Roo Code Task Links (optional)

No response

Relevant logs or errors (optional)

Activity

  1. ghost added a commit that references this issue on Oct 6, 2025
    f30e88e
  2. ghost added a commit that references this issue on Oct 6, 2025
    1781e3f
  3. added
    Issue/PR - TriageNew issue. Needs quick review to confirm validity and assign labels.
    on Oct 6, 2025
  4. hannesrudolph commented on Oct 28, 2025

    @hannesrudolph
    Contributor

    Confirmed.

  5. moved this from Triage to Issue [Unassigned] in Roo Code Roadmapon Oct 28, 2025
  6. added and removed
    Issue/PR - TriageNew issue. Needs quick review to confirm validity and assign labels.
    on Oct 28, 2025
  7. changed the title [-][BUG] Non-ASCII characters (Cyrillic, Chinese, Hindi, etc.) displayed as "?" or diamond symbols in Roo Code output[/-] [+][BUG] Non-ASCII characters (Cyrillic, Chinese, Hindi, etc.) displayed as "?" or diamond symbols in Roo Code output [COM-151][/+] on Jan 8, 2026
  8. changed the title [-][BUG] Non-ASCII characters (Cyrillic, Chinese, Hindi, etc.) displayed as "?" or diamond symbols in Roo Code output [COM-151][/-] [+][BUG] Non-ASCII characters (Cyrillic, Chinese, Hindi, etc.) displayed as "?" or diamond symbols in Roo Code output[/+] on Jan 9, 2026
  9. CandiBoBBer commented on Jan 24, 2026

    @CandiBoBBer

    Greetings. Will this bug be fixed? It's still there. Or did I miss something?

  10. rossdonald commented on Feb 18, 2026

    @rossdonald
    Contributor

    I investigating the issue where non-ASCII characters are displayed as question marks or diamond symbols in the inline terminal output, the root cause has been identified as a behavioral difference between the two terminal providers used by Roo Code.

    Terminal Provider Architecture

    Roo Code provides two terminal execution modes, controlled by the "Use Inline Terminal" setting:

    1. VS Code Terminal (src/integrations/terminal/Terminal.ts)

      • Used when "Use Inline Terminal" is disabled
      • Executes commands in a visible VS Code terminal instance
      • Uses VS Code's default terminal profile (typically PowerShell on Windows)
      • Properly handles Unicode output through VS Code's terminal infrastructure
    2. Execa Terminal (src/integrations/terminal/ExecaTerminal.ts)

      • Used when "Use Inline Terminal" is enabled
      • Executes commands inline within the agent chat
      • Does not use VS Code's default terminal profile
      • Directly spawns processes via Node.js/Execa/cmd.exe

    The Core Issue

    The VS Code terminal provider works correctly with non-ASCII characters because it leverages VS Code's built-in terminal management, which uses the user's configured default profile. On Windows, this is typically PowerShell, which handles Unicode encoding properly.

    However, the Execa terminal provider bypasses VS Code's terminal infrastructure entirely. It spawns processes directly through Node.js, and on Windows, this defaults to using cmd.exe as the shell intermediate layer. This creates a character encoding mismatch:

    • Windows shells (CMD and PowerShell) use legacy code pages (like CP437 or CP1252) when their output is redirected or piped to another process
    • Execa defaults to UTF-8 decoding
    • When Execa receives bytes encoded in a legacy code page and attempts to decode them as UTF-8, multi-byte Unicode characters become corrupted

    Possible Solutions

    Use PowerShell instead of cmd.exe in Execa Terminal

    If the operating system is windows then use the built-in powershell shell to run the command. Set shell to false in Execa config as we run powershell directly.

    const finalCommand = isWindows
        ? `powershell -NoLogo -NoProfile -Command "[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; ${command}"`
        : command;

    Can also check the user's default terminal profile. If it's PowerShell 7 (pwsh), then use that instead as it's more up to date.

    Alternate Solution: Use VS Code Default Terminal Profile

    Query VS Code's terminal configuration to determine the default shell. This gets complicated as default shells such as WSL can have arguments to make them work correctly, but it's Execa doesn't support starting a shell with arguments. So I think this is too complicated.

    I can make a PR.

  11. DereckZhang commented on Feb 26, 2026

    @DereckZhang

    Use PowerShell instead of cmd.exe in Execa Terminal

    Use PowerShell instead of cmd.exe in Execa Terminal is a good solution ,but in some environment, PowerShell is not allowed to use ,is there any chance to support Bash?

  12. rossdonald commented on Feb 26, 2026

    @rossdonald
    Contributor

    PowerShell is not allowed to use ,is there any chance to support Bash?

    These changes are only for Windows and Windows always has PowerShell installed. What environment are you talking about where PowerShell is not available?

    is there any chance to support Bash?

    On Linux, it uses bash currently, that would stay the same. If you disable the inline terminal it will use the default VS Code terminal which can be git bash or whatever you set as the default terminal.

    I did look at supporting the terminal profiles in VS Code. It is possible, but it doesn't work very well because Execa cannot start a shell that has args and some of the profiles in VS Code use args. Running the shell without args would be incorrect. e.g.

    • WSL profiles as they use args to specify the distro to run. wsl.exe -d ubuntu-22.04
    • The Git bash profile has args C:\Program Files\Git\bin\bash.exe --login -i
  13. DereckZhang commented on Feb 26, 2026

    @DereckZhang

    PowerShell is not allowed to use ,is there any chance to support Bash?

    These changes are only for Windows and Windows always has PowerShell installed. What environment are you talking about where PowerShell is not available?

    is there any chance to support Bash?

    On Linux, it uses bash currently, that would stay the same. If you disable the inline terminal it will use the default VS Code terminal which can be git bash or whatever you set as the default terminal.

    I did look at supporting the terminal profiles in VS Code. It is possible, but it doesn't work very well because Execa cannot start a shell that has args and some of the profiles in VS Code use args. Running the shell without args would be incorrect. e.g.

    • WSL profiles as they use args to specify the distro to run. wsl.exe -d ubuntu-22.04
    • The Git bash profile has args C:\Program Files\Git\bin\bash.exe --login -i

    Some company-provided computers have strict security restrictions, prohibiting the use of PowerShell, so I can only use Bash in VSCode.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions