Get-FileEncoding by RyanFisher 36 months ago (modification of post by Chad Miller view diff)
View followups from Andy Arismendi and RyanFisher | diff | embed code: <script type="text/javascript" src="http://PoshCode.org/embed/3223"></script>download | new post
Get-FileEncoding function determines encoding by looking at Byte Order Mark (BOM).
- <#
- .SYNOPSIS
- Gets file encoding.
- .DESCRIPTION
- The Get-FileEncoding function determines encoding by looking at Byte Order Mark (BOM).
- Based on port of C# code from http://www.west-wind.com/Weblog/posts/197245.aspx
- .EXAMPLE
- Get-ChildItem *.ps1 | select FullName, @{n='Encoding';e={Get-FileEncoding $_.FullName}} | where {$_.Encoding -ne 'ASCII'}
- This command gets ps1 files in current directory where encoding is not ASCII
- .EXAMPLE
- Get-ChildItem *.ps1 | select FullName, @{n='Encoding';e={Get-FileEncoding $_.FullName}} | where {$_.Encoding -ne 'ASCII'} | foreach {(get-content $_.FullName) | set-content $_.FullName -Encoding ASCII}
- Same as previous example but fixes encoding using set-content
- #>
- function Get-FileEncoding
- {
- [CmdletBinding()] Param (
- [Parameter(Mandatory = $True, ValueFromPipelineByPropertyName = $True)] [string]$Path
- )
- [byte[]]$byte = get-content -Encoding byte -ReadCount 4 -TotalCount 4 -Path $Path
- if ($byte.count -ge 0)
- {
- if ( $byte[0] -eq 0xef -and $byte[1] -eq 0xbb -and $byte[2] -eq 0xbf )
- { Write-Output 'UTF8' }
- elseif ($byte[0] -eq 0xfe -and $byte[1] -eq 0xff)
- { Write-Output 'Unicode' }
- elseif ($byte[0] -eq 0 -and $byte[1] -eq 0 -and $byte[2] -eq 0xfe -and $byte[3] -eq 0xff)
- { Write-Output 'UTF32' }
- elseif ($byte[0] -eq 0x2b -and $byte[1] -eq 0x2f -and $byte[2] -eq 0x76)
- { Write-Output 'UTF7'}
- else
- { Write-Output 'ASCII' }
- }
- }
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.
PowerShell Code Repository