PowerShell / Modules

MIT License
111 stars 25 forks source link

Remove UTF-8 BOM from text files (except PowerShell files) #100

Open xtqqczze opened 4 years ago

xtqqczze commented 4 years ago

See also: PowerShell/PowerShell#11546

rjmholt commented 4 years ago

Probably best not to remove the BOM from PowerShell scripts. Any script that needs to be run by Windows PowerShell needs a BOM so that WinPS won't try to read it as CP-1252

xtqqczze commented 4 years ago

@rjmholt The changed .ps1, .psd1 scripts are ASCII-safe. A good point that Windows PowerShell defaults to Windows-1252 though. [1]

rjmholt commented 3 years ago

[1]

Ha, yes, despite the attributions at the top, I wrote that doc

The changed .ps1, .psd1 scripts are ASCII-safe

Yes, they are for now, but the issue arises when people edit them

xtqqczze commented 3 years ago

This repo contains 13 .ps1 files and 14 psd1 files, and 4 psm1 files. Currently only 2 of these files contain the BOM - I will exclude these from this PR.

Maybe we need to consider adding a BOM to the remaining PowerShell files. Alternatively, we could add a test to ensure all PowerShell files are ASCII-safe.

rjmholt commented 3 years ago

Maybe we need to consider adding a BOM to the remaining PowerShell files. Alternatively, we could add a test to ensure all PowerShell files are ASCII-safe.

Yeah, it sounds like adding the BOM would be a good idea. PSScriptAnalyzer exports this rule to assess scripts' need for a BOM.

xtqqczze commented 3 years ago

Ah, so that's the purpose of UseBOMForUnicodeEncodedFile 😄

xtqqczze commented 3 years ago

I think the best approach would be to check the PowerShell files are ASCII-safe with a Github action. However, in the short term, the simplest solution seems to be just to add the BOM to these files.

xtqqczze commented 3 years ago

@rjmholt This PR is ready for review.