Problem with printing UTF8 with NO BOM #8045

Closed
opened 2026-01-31 01:19:24 +00:00 by claunia · 9 comments
Owner

Originally created by @BobFrankston on GitHub (May 9, 2020).

Environment

Windows build number: [run `[Environment]::OSVersion` for PowerShell, or `ver` for cmd]
Microsoft Windows [Version 10.0.18362.295]
Windows Terminal version (if applicable): 0.11.1191.0

Any other software?

Steps to reproduce

create a file with utf-8 content as in

 “test’

type test.txt

Expected behavior

It should simply show

 “test’

Actual behavior

In PowerShell and with BOM see the proper output

Without BOM
In Command Shell  - ΓÇ£testΓÇÖ
PowerShell - “test’
Ubuntu:  “test’

with BOM
In command Shell - “test’
PowerShell:  “test’
Ubuntu:  “test’

Very simply Windows still seems stuck in the old days of UTF7 After 25 years of Unicode, it needs to grow up. At very least there should be a flag in the settings to enable UTF8 as a default.

Originally created by @BobFrankston on GitHub (May 9, 2020). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> <!-- This bug tracker is monitored by Windows Terminal development team and other technical folks. **Important: When reporting BSODs or security issues, DO NOT attach memory dumps, logs, or traces to Github issues**. Instead, send dumps/traces to secure@microsoft.com, referencing this GitHub issue. If this is an application crash, please also provide a Feedback Hub submission link so we can find your diagnostic data on the backend. Use the category "Apps > Windows Terminal (Preview)" and choose "Share My Feedback" after submission to get the link. Please use this form and describe your issue, concisely but precisely, with as much detail as possible. --> # Environment ```none Windows build number: [run `[Environment]::OSVersion` for PowerShell, or `ver` for cmd] Microsoft Windows [Version 10.0.18362.295] Windows Terminal version (if applicable): 0.11.1191.0 Any other software? ``` # Steps to reproduce <!-- A description of how to trigger this bug. --> create a file with utf-8 content as in ``` “test’ ``` **type test.txt** # Expected behavior It should simply show ``` “test’ ``` <!-- A description of what you're expecting, possibly containing screenshots or reference material. --> # Actual behavior In PowerShell and with BOM see the proper output ``` Without BOM In Command Shell - ΓÇ£testΓÇÖ PowerShell - “test’ Ubuntu: “test’ with BOM In command Shell - ∩╗┐ΓÇ£testΓÇÖ PowerShell: “test’ Ubuntu: “test’ ``` <!-- What's actually happening? --> Very simply Windows still seems stuck in the old days of UTF7 After 25 years of Unicode, it needs to grow up. At very least there should be a flag in the settings to enable UTF8 as a default.
claunia added the Resolution-Duplicate label 2026-01-31 01:19:24 +00:00
Author
Owner

@j4james commented on GitHub (May 9, 2020):

You could try setting your code page to UTF-8 with chcp 65001.

@j4james commented on GitHub (May 9, 2020): You could try setting your code page to UTF-8 with `chcp 65001`.
Author
Owner

@BobFrankston commented on GitHub (May 9, 2020):

Thanks. interesting that it works in Command but not PowerShell. Is there a way to set it as the default in the settings. At least for the Command shell?

Separately I'll submit feedback that CHCP would allow names, not numbers. It should be easy to update it to circa 1999.

@BobFrankston commented on GitHub (May 9, 2020): Thanks. interesting that it works in Command but not PowerShell. Is there a way to set it as the default in the settings. At least for the Command shell? Separately I'll submit feedback that CHCP would allow names, not numbers. It should be easy to update it to circa 1999.
Author
Owner

@BobFrankston commented on GitHub (May 9, 2020):

Checking there seem to be ways to set it in the register but given Windows Terminal has a settings file that would seem the appropriate place.

@BobFrankston commented on GitHub (May 9, 2020): Checking there seem to be ways to set it in the register but given Windows Terminal has a settings file that would seem the appropriate place.
Author
Owner

@MohammatMajken commented on GitHub (May 10, 2020):

I think I have the same error. hmm :/

@MohammatMajken commented on GitHub (May 10, 2020): I think I have the same error. hmm :/
Author
Owner

@DHowett-MSFT commented on GitHub (May 11, 2020):

So, at its core, this is a request for /dup #1802. I'm not averse to breaking compatibility here, we just haven't done the work necessary here 😄

@DHowett-MSFT commented on GitHub (May 11, 2020): So, at its core, this is a request for /dup #1802. I'm not averse to breaking compatibility here, we just haven't done the work necessary here :smile:
Author
Owner

@ghost commented on GitHub (May 11, 2020):

Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!

@ghost commented on GitHub (May 11, 2020): Hi! We've identified this issue as a duplicate of another one that already exists on this Issue Tracker. This specific instance is being closed in favor of tracking the concern over on the referenced thread. Thanks for your report!
Author
Owner

@DHowett-MSFT commented on GitHub (May 11, 2020):

(Thanks for the report!)

@DHowett-MSFT commented on GitHub (May 11, 2020): (Thanks for the report!)
Author
Owner

@jonasnordlund commented on GitHub (May 22, 2020):

As for why this curiously worked in CMD but not Powershell (and you're actually talking about Powershell here and not Powershell Core), I think it's because Powershell has a requirement of a BOM and your text was without one.

There's a solution though -- one may additionally need to first set:

$OutputEncoding = System.Text.UTF8Encoding

Note that this is no longer necessary in Powershell Core, which thankfully no longer expects a BOM for UTF-8.

@jonasnordlund commented on GitHub (May 22, 2020): As for why this curiously worked in CMD but not Powershell (and you're actually talking about Powershell here and not Powershell Core), I think it's because Powershell has a requirement of a BOM and your text was without one. There's a solution though -- one may additionally need to first set: `$OutputEncoding = System.Text.UTF8Encoding` Note that this is no longer necessary in Powershell Core, which thankfully no longer expects a BOM for UTF-8.
Author
Owner

@LuanVSO commented on GitHub (Nov 5, 2020):

in PowerShell 7 it is printed correctly, on windows PowerShell you need to pass -encoding utf8 to the command

@LuanVSO commented on GitHub (Nov 5, 2020): in PowerShell 7 it is printed correctly, on windows PowerShell you need to pass `-encoding utf8` to the command
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#8045