PowerShell에서의 UTF-8 인코딩 (CHCP 65001)

  1. PowerShell의 유니코드
  2. Windows PowerShell에서 UTF-8 인코딩을 사용하기 위해 시스템 로케일 변경
  3. Windows PowerShell에서 UTF-8 인코딩을 사용하기 위해 $PSDefaultParameterValues 변수에 인코딩 설정하기
  4. Windows PowerShell에서 UTF-8 인코딩으로 전환하기 위한 chcp 명령 사용
  5. PowerShell에서 UTF-8 인코딩을 사용할 때의 이점
  6. 결론
PowerShell에서의 UTF-8 인코딩 (CHCP 65001)

UTF-8 인코딩은 PowerShell에서 CHCP 65001으로 표현되며, 다국어 및 특수 문자를 콘솔에서 작업하는 데 중요한 도구입니다. 이 문서에서는 UTF-8 인코딩의 중요성을 이해하는 것부터 실용적인 구현에 이르기까지 PowerShell에서 UTF-8 인코딩을 활용하는 방법에 대한 종합 가이드를 제공합니다.

PowerShell의 유니코드

유니코드는 전 세계 문자 인코딩 표준입니다. 텍스트 파일, 웹 페이지 및 기타 문서에서 문자가 어떻게 표현되는지를 정의합니다.

컴퓨터 시스템은 문자를 조작하기 위해 유니코드를 사용합니다. PowerShell의 기본 인코딩은 Windows-1252입니다.

유니코드는 전 세계 모든 언어의 문자를 지원하기 위해 개발되었습니다. PowerShell은 기본적으로 유니코드 문자 인코딩을 지원합니다.

UTF-8과 UTF-16은 가장 일반적인 유니코드 인코딩입니다. PowerShell은 UTF7을 제외한 모든 유니코드 인코딩에서 항상 BOM을 사용합니다.

BOM(바이트 순서 마크)은 파일이나 텍스트 스트림의 처음 몇 바이트에 포함된 유니코드 서명으로, 유니코드 인코딩을 나타냅니다.

UTF-8 인코딩 이해하기

UTF-8은 텍스트를 표현하기 위해 가변 너비 인코딩을 사용하는 문자 인코딩 표준입니다. 이는 사실상 모든 유니코드 문자를 인코딩할 수 있어 인터넷에서 가장 널리 사용되는 문자 인코딩입니다.

PowerShell의 맥락에서, UTF-8 인코딩은 다양한 언어의 문자, 기호 및 특수 문자가 콘솔 창에 올바르게 표시되고 처리되도록 보장합니다.

Windows PowerShell에서 UTF-8 인코딩을 사용하기 위해 시스템 로케일 변경

Windows에서 시스템 로케일(비유니코드 프로그램에 대한 현재 언어)을 변경하는 옵션이 있습니다. 하지만 이 기능은 아직 베타입니다.

제어판에서 지역 설정으로 이동하거나 실행 프로그램(Windows+R)에서 intl.cpl을 엽니다.

PowerShell에서 UTF-8 인코딩을 사용하도록 시스템 로케일 변경

관리자 탭을 열고 시스템 로케일 변경을 클릭합니다. 그런 다음 아래 이미지와 같이 베타 옵션을 확인합니다.

전 세계 언어 지원을 위해 유니코드 UTF-8을 사용하세요.

그 후 확인을 누르고 컴퓨터를 재시작하여 설정을 적용합니다.

컴퓨터를 재시작한 후 $OutputEncoding 변수를 확인하여 현재 인코딩을 볼 수 있습니다.

$OutputEncoding

출력:

현재 인코딩은 유니코드(UTF-8)임을 확인할 수 있습니다.

BodyName          : utf-8
EncodingName      : Unicode (UTF-8)
HeaderName        : utf-8
WebName           : utf-8
WindowsCodePage   : 1200
IsBrowserDisplay  : True
IsBrowserSave     : True
IsMailNewsDisplay : True
IsMailNewsSave    : True
IsSingleByte      : False
EncoderFallback   : System.Text.EncoderReplacementFallback
DecoderFallback   : System.Text.DecoderReplacementFallback
IsReadOnly        : True
CodePage          : 65001

이제 PowerShell에서 다른 언어의 문자를 볼 수 있습니다.

Get-Content test.txt

출력:

만나서 반가워요

Windows PowerShell에서 UTF-8 인코딩을 사용하기 위해 $PSDefaultParameterValues 변수에 인코딩 설정하기

$PSDefaultParameterValues는 PowerShell에서 cmdlet 매개변수의 기본 값을 설정할 수 있는 내장 자동 변수입니다. 이는 cmdlet을 사용할 때마다 매개변수를 명시적으로 제공하지 않고도 기본 값을 지정할 수 있음을 의미합니다.

다음 명령을 실행하여 PowerShell에서 UTF-8 인코딩을 활성화할 수 있습니다.

$PSDefaultParameterValues = @{'*:Encoding' = 'utf8' }

이는 현재 PowerShell 콘솔에만 유효합니다. PowerShell 창을 종료하면 기본값으로 재설정됩니다.

Get-Content test.txt

출력:

만나서 반가워요

PowerShell의 여러 cmdlet에는 다양한 문자 집합의 인코딩을 지정하기 위한 -Encoding 매개변수가 있습니다. 그 중 일부는 Add-Content, Set-Content, Get-Content, Export-Csv, Out-File 등이 있습니다.

-Encoding 매개변수는 다음 값들을 지원합니다: ascii, bigendianunicode, oem, unicode, utf7, utf8, utf8BOM, utf8NoBOM, utf32.

Windows PowerShell에서 UTF-8 인코딩으로 전환하기 위한 chcp 명령 사용

PowerShell에서 UTF-8 인코딩으로 전환하려면 chcp 명령 뒤에 65001을 사용합니다:

chcp 65001

이 명령은 PowerShell에 문자 입력 및 출력을 위해 UTF-8 인코딩을 사용하도록 지시합니다.

이 명령이 수행하는 작업은 다음과 같습니다:

  • chcp: 이것은 Windows 명령 프롬프트와 PowerShell의 명령입니다. "Change Code Page"의 약어입니다. 코드 페이지는 콘솔 창에서 문자가 어떻게 인코딩되고 표시되는지를 결정합니다.

  • 65001: 이 컨텍스트에서 65001은 UTF-8 인코딩을 위한 코드 페이지를 나타냅니다. UTF-8은 유니코드에서 가능한 모든 문자나 코드 포인트를 인코딩할 수 있는 가변 너비 문자 인코딩입니다.

    • UTF-8: 거의 모든 인간 언어의 문자를 표현할 수 있는 널리 사용되는 문자 인코딩입니다. 특히 인터넷에서 일반적입니다.
  • UTF-8(65001)로 변경: chcp 65001을 실행하면 PowerShell에 콘솔에서 문자 입력 및 출력을 위해 UTF-8 인코딩을 사용하도록 지시하는 것입니다. 이는 여러 언어와 기호가 포함된 텍스트 데이터 작업 시 유용할 수 있습니다.

    예를 들어, 비영어 문자가 포함된 파일이나 데이터 작업 시 코드 페이지를 UTF-8로 설정하면 이러한 문자가 콘솔에서 올바르게 표시됩니다.

기본 코드 페이지로 재설정하기

코드 페이지를 변경하면 일부 콘솔 응용 프로그램의 동작에 영향을 줄 수 있으므로, UTF-8 사용이 끝나면 일반적으로 기본 코드 페이지(영어의 경우 보통 437)로 재설정하는 것이 좋습니다.

기본으로 코드 페이지를 재설정하려면 다음 명령을 사용할 수 있습니다:

chcp 437

이렇게 하면 시스템에 적합한 기본 코드 페이지로 전환되며, 영어 텍스트에 적합합니다.

PowerShell에서 UTF-8 인코딩을 사용할 때의 이점

  1. 다국어 지원: UTF-8은 PowerShell이 여러 언어의 텍스트를 처리할 수 있도록 하여 다양한 스크립트의 문자를 올바르게 표시하고 처리합니다.
  2. 특수 문자: 일반 인코딩에서 표현되지 않는 이모지나 수학 기호와 같은 특수 문자를 다룰 때 매우 중요합니다.
  3. 파일 처리: 다양한 언어의 문자가 포함된 텍스트 파일 작업 시 UTF-8을 사용하면 정확한 파일 작업을 보장합니다.
  4. 데이터 처리: 비영어 문자가 포함된 데이터를 작업할 경우 코드 페이지를 UTF-8로 설정하면 올바른 처리와 처리를 보장합니다.

잠재적 고려 사항

  1. 콘솔 응용 프로그램: 코드 페이지를 변경하면 일부 콘솔 응용 프로그램의 동작에 영향을 줄 수 있으므로, UTF-8 사용이 끝났을 때는 항상 기본 코드 페이지(chcp 437 영어)를 재설정해야 합니다.
  2. 호환성: PowerShell에서 실행하는 프로그램이나 스크립트가 UTF-8 인코딩을 처리할 수 있는지 확인해야 합니다. 이전 버전의 응용 프로그램은 완전히 지원하지 않을 수 있습니다.

실용적인 사용 사례

  1. 파일 읽기: 비영어 문자가 포함된 텍스트 파일을 읽을 때 UTF-8을 사용하면 정확한 표현을 보장합니다.
  2. 웹 스크래핑: 여러 언어의 문자가 포함될 수 있는 웹사이트에서 텍스트를 추출할 경우 UTF-8이 올바른 해석을 보장합니다.
  3. 스크립트 출력: 스크립트가 비영어 문자가 포함된 출력을 생성하는 경우 UTF-8을 사용하면 올바르게 표시됩니다.
  4. 인터랙티브 PowerShell 세션: 특수 문자가 포함된 텍스트를 입력하거나 출력해야 하는 인터랙티브 세션에서 UTF-8 인코딩은 매우 유용합니다.

결론

PowerShell의 UTF-8 인코딩(CHCP 65001)은 콘솔에서 다국어 및 특수 문자를 처리하는 강력한 도구입니다. 이는 다양한 언어와 스크립트에서 텍스트를 정확하게 표현하고 처리할 수 있도록 합니다. UTF-8 인코딩을 언제, 어떻게 사용할지를 이해하면 다양한 문자 집합으로 작업할 때 원활한 경험을 보장할 수 있습니다.

프로그램이나 스크립트가 UTF-8과 호환되는지를 고려하고, 필요할 때 항상 기본 코드 페이지로 되돌리는 것을 잊지 마십시오. UTF-8 인코딩의 힘을 활용하면 PowerShell에서 다양한 텍스트 데이터를 자신 있게 그리고 정확하게 처리할 수 있습니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website