You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on May 15, 2026. It is now read-only.
Repository navigation
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
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.
Reproduction steps
Windows 11, VS Code 1.104.3
Open VS Code with Roo Code extension enabled.
Ask Roo: please run command "echo hi, привет, 你好, नमस्ते"
Observe the Roo Code agent output — non-English text becomes ? or �.
Compare the same command in Windows CMD or PowerShell — all characters display correctly.
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.
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
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
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:
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
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.
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.
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?
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
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.
Activity
fix: add UTF-8 encoding support for VSCode terminal output on Windows
fix: properly implement UTF-8 support for Windows terminals
hannesrudolph commentedon Oct 28, 2025
Confirmed.
[-][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][/+][-][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[/+]CandiBoBBer commentedon Jan 24, 2026
Greetings. Will this bug be fixed? It's still there. Or did I miss something?
rossdonald commentedon Feb 18, 2026
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:
VS Code Terminal (
src/integrations/terminal/Terminal.ts)Execa Terminal (
src/integrations/terminal/ExecaTerminal.ts)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.exeas the shell intermediate layer. This creates a character encoding mismatch: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.
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.
DereckZhang commentedon Feb 26, 2026
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?
rossdonald commentedon Feb 26, 2026
These changes are only for Windows and Windows always has PowerShell installed. What environment are you talking about where PowerShell is not available?
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.exe -d ubuntu-22.04C:\Program Files\Git\bin\bash.exe --login -iDereckZhang commentedon Feb 26, 2026
Some company-provided computers have strict security restrictions, prohibiting the use of PowerShell, so I can only use Bash in VSCode.