파워쉘에서 윈도우의 내부 기능을 사용하여 변경하는 방법이다.
서브폴더를 포함한 특정 파일유형을 모두 찾아서 변환해 준다.
# 변환할 인코딩 설정 (EUC-KR = Code Page 949) #$sourceEncoding = [System.Text.Encoding]::GetEncoding(949) $sourceEncoding = [System.Text.Encoding]::Unicode $targetEncoding = [System.Text.Encoding]::UTF8 # 검색할 확장자들 #$extensions = @("*.c", "*.cpp", "*.h", "*.hpp") $extensions = @("*.xml") # 현재 디렉토리 및 하위 폴더 탐색 foreach ($ext in $extensions) { Get-ChildItem -Recurse -Filter $ext | ForEach-Object { Write-Host "변환 중: $($_.FullName)" try { $content = [System.IO.File]::ReadAllText($_.FullName, $sourceEncoding) [System.IO.File]::WriteAllText($_.FullName, $content, $targetEncoding) } catch { Write-Warning "변환 실패: $($_.FullName) - $_" } } }
위의 예제는 Unicode를 UTF-8 로 변환한다. 만약 EUC-KR 또는 CP949를 UTF-8 로 변경하고자 한다면 2번째 행의 코멘트를 제거하고 3번째를 코멘트롤 막으면 된다.
변환할 확장자를 바꾸려면 7번, 8번행을 참고한다.