WSL 우분투 한글·로케일·시간 깔끔하게 맞추기

WSL 우분투에서 한글이 깨지거나 시간대가 안 맞을 때, 로케일과 인코딩, 타임존을 입문자 눈높이에서 차근차근 맞추는 방법을 점검 순서로 정리했습니다.

왜 필요한가 · WSL 우분투를 처음 설치하면 한글이 깨지거나 시간대가 윈도우와 달라 헷갈리는 경우가 많아, 작업 전에 한 번 정리해 두면 두고두고 편하기 때문입니다.

누구에게 · WSL 우분투를 막 설치했고, 한글 표시나 시간대 문제로 불편을 느낀 입문자

읽고 나면 · 로케일을 한국어 UTF-8 로 맞추고, 한글이 제대로 보이도록 인코딩과 글꼴을 점검하며, 시간대를 서울로 설정할 수 있습니다.

핵심 요약

  • 한글이 깨지는 대부분의 원인은 로케일 설정으로, locale-gen 으로 ko_KR.UTF-8 을 만들고 LANG 을 지정하면 해결됩니다.
  • 한글이 □(빈 네모)로 보이면 로케일이 아니라 터미널 글꼴 문제일 때가 많습니다.
  • 시간대가 안 맞으면 timedatectl 로 Asia/Seoul 을 지정하거나, 안 되면 tzdata 를 다시 설정하면 됩니다.

WSL에 우분투를 막 설치하고 나면, 한글 파일 이름이 깨져 보이거나 시간이 윈도우와 다르게 표시되는 일이 흔합니다. 처음에는 “설치가 잘못됐나” 싶지만, 대부분은 로케일과 시간대 설정이 기본값 그대로라서 생기는 일입니다. 이 글에서는 그 문제들을 한글 로케일, 한글 표시, 시간대 순서로 하나씩 짚어 정리합니다. 한 번에 여러 가지를 바꾸기보다, 확인 → 설정 → 적용을 단계로 밟아 가는 편이 원인을 좁히기 쉽습니다.

로케일이 무엇이고 왜 한글이 깨지나

로케일(locale)은 시스템이 “어떤 언어와 문자 인코딩을 기본으로 쓸지” 정해 둔 설정입니다. 우분투를 영어 기본으로 설치하면 로케일이 영어로 잡혀 있어, 한글을 다루는 일부 상황에서 글자가 깨지거나 정렬·정규식 처리가 어긋날 수 있습니다.

여기서 중요한 두 가지가 언어(LANG)인코딩(UTF-8) 입니다. 한글 자체는 UTF-8 인코딩으로 표현되는데, 시스템 기본이 C/POSIX 처럼 아스키 위주 로케일이면 한글 바이트를 글자로 해석하지 못해 깨져 보이게 됩니다.

지금 로케일 확인하기

먼저 현재 상태를 봅니다.

locale

LANG= 옆이 비어 있거나 C 또는 POSIX 로 되어 있으면, 한글을 위한 설정이 아직 없는 상태입니다. 어떤 로케일을 쓸 수 있는지(이미 생성된 목록)는 다음으로 확인합니다.

locale -a

이 목록에 ko_KR.utf8 이 보이지 않는다면, 아직 한국어 로케일이 생성되지 않은 것입니다. 다음 단계에서 만들면 됩니다.

✍️ 운영자 한마디

한글이 깨져 나올 때 글꼴 문제인지 인코딩 문제인지 구분이 안 돼 한참 엉뚱한 곳을 손댔습니다. 로케일을 제대로 잡고 나니 거짓말처럼 정리됐습니다.

한국어 로케일 만들고 적용하기

한국어 UTF-8 로케일을 생성한 뒤, 기본 언어로 지정합니다.

sudo locale-gen ko_KR.UTF-8
sudo update-locale LANG=ko_KR.UTF-8

첫 줄은 한국어 로케일 데이터를 만들어 두는 명령이고, 둘째 줄은 시스템 기본 LANG 값을 그 로케일로 바꾸는 명령입니다. update-locale/etc/default/locale 파일을 손봐 다음 로그인부터 적용되게 합니다.

만약 locale-gen 단계에서 로케일이 만들어지지 않는다면, 어떤 로케일을 생성할지 고르는 설정 화면을 직접 띄워 목록에서 ko_KR.UTF-8 을 선택하는 방법도 있습니다.

sudo dpkg-reconfigure locales

적용은 세션을 새로 열어야 반영된다

설정을 바꿔도 이미 열려 있는 터미널에는 곧바로 반영되지 않습니다. 터미널을 새로 열거나, 확실히 하려면 WSL을 한 번 완전히 껐다 켭니다.

wsl.exe --shutdown

위 명령은 윈도우 쪽에서 WSL을 완전히 종료해, 다음 실행 때 설정을 새로 읽게 합니다. 다시 켠 뒤 locale 을 실행해 LANG=ko_KR.UTF-8 로 바뀌었는지 확인하세요.

영어 메시지를 유지하고 싶다면

명령 결과나 에러 메시지는 영어가 더 익숙한 경우도 많습니다. 그럴 때는 시스템 언어는 영어로 두되, 한글 입출력에 필요한 부분만 UTF-8 로 맞추는 선택도 있습니다. 예를 들어 특정 작업에서만 한국어 로케일을 임시로 쓰고 싶다면, 그 명령 앞에 환경 변수를 붙이는 방식도 가능합니다.

LANG=ko_KR.UTF-8 date

이렇게 하면 그 한 번의 실행에만 한국어 로케일이 적용되고, 전체 설정은 그대로 둡니다.

한글이 보이긴 하는데 깨질 때

로케일을 맞췄는데도 한글이 이상하게 보인다면, 원인은 보통 둘 중 하나입니다. 둘은 증상이 다르니 구분해서 봐야 합니다.

  • 인코딩 불일치 — 글자가 한글 처럼 다른 문자가 섞여 깨져 보이는 경우입니다. 거의 모든 현대 리눅스 환경은 UTF-8 을 쓰므로, 외부에서 가져온 파일이 EUC-KR 같은 다른 인코딩일 때 주로 생깁니다.
  • 터미널 글꼴 — 한글이 같은 빈 네모로 보이면 인코딩보다 글꼴 문제일 때가 많습니다. 시스템은 한글을 제대로 처리하고 있는데, 터미널이 그 글자를 그릴 글꼴이 없는 상태입니다.

글꼴 문제는 리눅스가 아니라 터미널 프로그램 쪽 설정에서 풉니다. Windows Terminal 같은 프로그램의 설정에서 한글을 지원하는 고정폭(monospace) 글꼴로 바꾸면 대부분 해결됩니다. 인코딩이 의심되면, 가져온 파일이 UTF-8 인지 먼저 확인하는 습관이 도움이 됩니다.

file 파일이름.txt   # 텍스트 인코딩 힌트를 보여 줍니다

시간대(타임존) 맞추기

WSL 우분투의 시간이 윈도우와 다르게 보이면 타임존이 기본값(UTC 등)으로 잡혀 있는 경우가 많습니다. 현재 시간 설정은 다음으로 확인합니다.

timedatectl

여기서 Time zone 항목이 Etc/UTC 등으로 되어 있다면 한국 시간과 어긋나 보입니다. 서울 시간대로 바꾸는 가장 간단한 방법은 timedatectl 로 직접 지정하는 것입니다.

sudo timedatectl set-timezone Asia/Seoul

환경에 따라 위 명령이 동작하지 않으면, tzdata 설정 화면을 다시 띄워 목록에서 Asia → Seoul 을 고르는 방법을 씁니다.

sudo dpkg-reconfigure tzdata

설정 후 date 명령으로 시간이 한국 시간(KST)으로 나오는지 확인하면 됩니다.

date

윈도우와 시간이 어긋나 보일 때

WSL을 오래 켜 두거나 윈도우가 절전·최대 절전에서 깨어난 뒤, WSL 안의 시계만 살짝 어긋나 보이는 경우가 있습니다. 이는 타임존이 아니라 가상 환경의 시계가 윈도우와 다시 동기화되지 못한 상황일 수 있습니다. 이럴 때는 무거운 설정을 손대기 전에, WSL을 한 번 껐다 켜서 시계를 다시 맞추는 것부터 시도해 보세요.

wsl.exe --shutdown

시계 어긋남은 단순히 보기 불편한 데서 끝나지 않고, 뒤에서 다룰 네트워크·인증 문제로 이어지기도 하니 가볍게 넘기지 않는 편이 좋습니다.

초보자가 자주 막히는 부분

  • 설정을 바꿨는데 그대로다 — 로케일은 터미널을 새로 열거나 WSL을 재시작해야 적용됩니다. wsl.exe --shutdown 후 다시 켜 보세요.
  • 로케일과 글꼴 문제를 혼동 — 한글이 깨지는 것과 네모(□)로 보이는 것은 원인이 다릅니다. 네모는 보통 글꼴 문제입니다.
  • locale -a 에 ko_KR 이 없는데 LANG만 바꿈 — 로케일을 생성하지 않고 LANG 만 지정하면 오히려 경고가 납니다. locale-gen 으로 먼저 만들어야 합니다.
  • timedatectl 이 안 먹힘 — 일부 WSL 환경에서는 dpkg-reconfigure tzdata 쪽이 더 확실하게 동작합니다.
  • 영어 메시지가 사라져 당황 — 로케일을 한국어로 바꾸면 일부 안내가 한글로 나옵니다. 영어가 익숙하면 LANG 을 영어로 두는 선택도 가능합니다.

한글·시간 설정 체크리스트

  • locale 로 현재 LANG 값을 확인했다
  • locale -a 에 ko_KR.utf8 이 있는지 확인했다
  • sudo locale-gen ko_KR.UTF-8 로 한국어 로케일을 만들었다
  • sudo update-locale LANG=ko_KR.UTF-8 로 기본 언어를 지정했다
  • WSL을 재시작해 설정을 적용했다
  • timedatectl 또는 tzdata 로 시간대를 Asia/Seoul 로 맞췄다

정리

WSL 우분투의 한글과 시간 문제는 설치가 잘못된 것이 아니라, 기본 설정이 한국 환경에 맞춰져 있지 않아서 생깁니다. 로케일을 한국어 UTF-8 로 만들고, 글꼴까지 한 번 점검하고, 타임존을 서울로 맞추면 이후 작업이 한결 깔끔해집니다. 한 번에 다 바꾸기보다 확인 → 설정 → 적용을 순서대로 밟아 두면, 다음에 비슷한 문제를 만나도 침착하게 풀어갈 수 있습니다. 설정을 마쳤다면 이제 환경을 손에 익히면서 다음 작업으로 넘어가 보세요.

자주 묻는 질문

로케일을 한국어로 바꾸면 명령어 결과도 전부 한글로 나오나요?
에러 메시지나 일부 안내 문구가 한국어로 보일 수 있지만, 명령어 자체나 옵션은 그대로입니다. 영어 메시지가 더 익숙하다면 LANG 을 영어 로케일로 두고 한글 입출력만 UTF-8 로 맞추는 방법도 있습니다.
한글이 네모(□)로만 보이는데 로케일 문제인가요?
그 경우는 보통 로케일이 아니라 터미널이 쓰는 글꼴 문제입니다. 사용 중인 터미널(예: Windows Terminal)에서 한글을 지원하는 고정폭 글꼴로 바꾸면 해결되는 경우가 많습니다.

이 글은 입문자 기준으로 이해하기 쉽게 정리했으며, 내용은 운영 과정에서 순차적으로 보완될 수 있습니다. 환경에 따라 화면이나 명령이 다르게 보일 수 있으니, 막히는 부분이 있으면 isense2021@gmail.com 로 알려주세요.