none
PowerShell Encoding RRS feed

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “PowerShell Encoding”에 대한 답변을 드리겠습니다.

                

    Step 1 : 파일 Encoding 변경

     

    PowerShell에서 파일의 Encding을 변경할 수 있습니다.

     

    Set-Content Cmdelt을 이용해서 Encoding을 임의로 변경을 할 수 있습니다. 생성되는 파일이 항상 기본 Encoding으로만 생성되고 Progamming으로 Encoding을 변경하는 경우에 유용합니다.

     

    function Set-FileEncoding

    {

        param

        (

            [Parameter(Mandatory=$true)]

            $fileFullName,

            [Parameter(Mandatory=$true)]

            [ValidateSet('UTF8', 'Unicode', 'ASCII')]

            $encoding

        )

       

        $tempData = Get-Content -Path $fileFullname

        Set-Content -Value $tempData -Encoding $encoding -Path $fileFullName

     

    }

     

     

    Set-FileEncoding 'C:\wmiobject.txt' 'UTF8'

     

     

    Step 2 : 출력 Encoding 변경

     

    출력되는 String Out-File Encoidng을 변경할 수 있습니다. 기본으로 출력되는 Encoidng을 변경하는 경우에 유용합니다.

     

    아래의 Cmdlet UTF8 Encoding으로 출력문자열을 저장을 합니다.

     

    Get-Process | out-string | out-file C:\temp1.txt -encoding UTF8

     

     

    Step 3 : 파일 Encoding확인

     

    아래의 Script Text파일의 Encoding을 확인할 수 있습니다.

     

    function Get-FileEncoding

    {

        param(

            [Parameter(Mandatory=$true)]

            $fileFullName

        )

       

        trap [Exception]

        {

            Write-Host $_.Exception.Message

            continue;        

        }

           

       

        [byte[]]$byte = get-content -Encoding byte -ReadCount 4 -TotalCount 4 -Path $fileFullName

     

        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' }

       

    }

     

     

    Get-FileEncoding 'C:\wmiobject.txt'

     

     

    참고 자료

     

    Set-Content

    http://technet.microsoft.com/ko-kr/library/dd347736.aspx

     

    Out-File

    http://technet.microsoft.com/ko-kr/library/dd315303.aspx

     

    Out-String

    http://technet.microsoft.com/en-us/library/dd315365.aspx

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 11월 11일 금요일 오전 4:35
    2011년 11월 10일 목요일 오전 9:48
    중재자