Ubuntu 문자 깨짐 완전 가이드 | 원인·해결·설정 변경까지 상세 해설

目次

1. 소개

Ubuntu를 사용하면 특정 상황에서 문자 깨짐이 발생할 수 있습니다. 예를 들어 터미널 출력, 일본어 파일명 표시, 브라우저에서 일본어 페이지를 볼 때 등 환경에 따라 증상이 다양합니다. 특히 기본 설정 그대로이면 일본어가 올바르게 표시되지 않는 경우가 많아 적절한 설정이 필요합니다. 본 기사에서는 Ubuntu에서 발생하는 문자 깨짐의 원인과 이를 해결하는 구체적인 방법을 설명합니다. 대상 독자는 다음과 같습니다.
  • Ubuntu 초보자이며, 일본어 표시 설정을 아직 하지 않은 분
  • 문자 깨짐의 원인을 알고 근본적인 해결책을 찾고 있는 분
  • 터미널이나 GUI 환경에서 문자 깨짐이 발생하고, 대처 방법을 알고 싶은 분
그럼 먼저 Ubuntu에서의 문자 깨짐 주요 원인을 살펴보겠습니다.

2. 문자 깨짐의 주요 원인

로케일 설정의 부재

Ubuntu의 로케일(locale)은 시스템의 언어와 날짜 형식을 결정하는 환경 설정을 의미합니다. 이것이 올바르게 설정되지 않으면 일본어가 표시되지 않거나 문자 깨짐이 발생할 수 있습니다. 예를 들어, locale 명령을 실행했을 때 아래와 같이 “C”나 “POSIX”가 표시되는 경우, 로케일이 적절히 설정되지 않았을 가능성이 있습니다。
$ locale
LANG=C
LC_ALL=
원래 일본어 환경에서는 LANG=ja_JP.UTF-8 와 같이 설정되어 있는 것이 바람직합니다.

폰트 미설정 및 부족

Ubuntu의 기본 상태에서는 일본어 폰트가 설치되어 있지 않은 경우가 있습니다. 따라서 일본어 텍스트가 적절히 표시되지 않아 사각형 박스(□)나 의미 없는 기호가 나타날 수 있습니다。 특히, 다음과 같은 상황에서 폰트가 부족한 것이 확인됩니다。
  • GUI 애플리케이션의 메뉴와 버튼이 문자 깨짐을 보이고 있다
  • 텍스트 편집기에서 일본어를 열면 문자 깨짐이 발생한다

문자 인코딩 불일치

Ubuntu에서는 주로 UTF-8이 표준으로 사용되지만, 외부에서 Shift_JISEUC-JP와 같은 다른 문자 인코딩 파일을 열 경우 문자 깨짐이 발생할 수 있습니다。 예를 들어, Windows 환경에서 만든 파일을 Ubuntu에서 열면 다음과 같은 현상이 발생할 수 있습니다。
  • 텍스트 편집기에서 열면 의미 없는 기호가 표시된다
  • 터미널에서 cat 명령을 실행하면 문자가 깨진다

터미널 및 편집기 설정 오류

터미널이나 편집기가 적절히 설정되지 않으면 UTF-8로 인코딩된 파일이라도 올바르게 표시되지 않을 수 있습니다。
  • 터미널의 인코딩 설정이 UTF-8이 아닌 경우
  • Vim이나 VSCode와 같은 편집기에서 문자 인코딩 자동 판별이 작동하지 않는다
  • lesscat으로 표시할 때, 일본어 부분만 “?”나 “◇”가 된다

3. 로케일 설정 확인 및 수정

로케일 설정 확인 방법

먼저, 현재 로케일 설정을 확인하려면 아래 명령을 실행합니다.
locale
출력 결과 예시:
LANG=C
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=
이 경우, LANG=C 로 되어 있어 일본어 환경이 적절히 설정되지 않았음을 알 수 있습니다. 일본어 환경에서는 아래와 같이 설정되는 것이 바람직합니다。
LANG=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8

일본어 로케일 설치 및 설정

1. 일본어 로케일 확인 및 추가

시스템에 일본어 로케일이 설치되어 있는지 확인하려면 아래 명령을 실행합니다。
locale -a | grep ja_JP
출력 결과 예시:
ja_JP.eucJP
ja_JP.utf8
만약 ja_JP.utf8 가 목록에 표시되지 않으면, 일본어 로케일을 설치해야 합니다。 아래 명령을 실행하여 일본어 로케일을 추가합니다。
sudo apt update
sudo apt install -y language-pack-ja
다음으로, 로케일을 활성화하기 위해 아래 명령을 실행합니다。
sudo locale-gen ja_JP.UTF-8
sudo update-locale LANG=ja_JP.UTF-8

2. 시스템 로케일 설정

로케일 변경을 시스템 전체에 적용하려면 아래 명령을 실행합니다。
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
이 설정을 영구화하기 위해 ~/.bashrc 또는 ~/.profile 에 추가합니다。
echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=ja_JP.UTF-8' >> ~/.bashrc
source ~/.bashrc
또는 모든 사용자에게 적용하려면 아래 파일을 편집합니다。
sudo nano /etc/default/locale
아래 내용을 추가하거나 수정합니다。
LANG=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8
설정을 적용하려면 로그아웃 후 다시 로그인하거나 재부팅합니다。

4. 폰트 설치 및 설정

일본어 폰트의 필요성

Ubuntu의 기본 상태에서는 일본어 폰트가 설치되어 있지 않을 수 있습니다. 따라서 일본어 텍스트가 제대로 표시되지 않아 사각형 박스(□)나 의미 없는 기호가 나타날 수 있습니다。 특히, 다음과 같은 상황에서 폰트가 부족한 것이 확인됩니다。
  • GUI 애플리케이션의 메뉴와 버튼이 문자 깨짐 현상이 있다
  • 텍스트 편집기에서 일본어를 열면 문자 깨짐이 발생한다

권장되는 일본어 폰트

Ubuntu에서 사용할 수 있는 일본어 폰트에는 다음과 같은 것이 있습니다。
폰트명특징
Noto Sans CJK JPGoogle이 제공하는 고품질 일본어 폰트(기본 권장)
Takao 폰트예전 Ubuntu 표준 폰트(얇은 글씨·굵은 글씨 포함)
IPA 폰트정보처리추진기구(IPA)가 제공하는 고품질 폰트
VL 고딕가시성이 높고 터미널에 최적

폰트 설치 방법

1. Noto Sans CJK JP(기본 권장 폰트)

sudo apt update
sudo apt install -y fonts-noto-cjk

2. Takao 폰트

sudo apt install -y fonts-takao

3. IPA 폰트(정보처리추진기구)

sudo apt install -y fonts-ipafont

4. VL 고딕(터미널용)

sudo apt install -y fonts-vlgothic
설치가 완료되면 시스템을 재시작하거나 폰트 캐시를 업데이트하여 설정을 반영합니다。
fc-cache -fv

폰트 설정 방법

GUI 앱에서의 폰트 설정

  1. ‘설정’ 앱을 연다
  2. ‘폰트’ 섹션을 연다
  3. ‘표준 폰트’, ‘문서 폰트’, ‘고정폭 폰트’를 원하는 폰트로 변경한다
  4. 로그아웃하고 다시 로그인하여 설정을 적용한다

터미널에서의 폰트 설정

  1. 터미널을 연다
  2. 메뉴의 ‘설정’ → ‘프로파일 편집’을 선택한다
  3. ‘폰트’ 섹션에서 ‘사용자 정의 폰트 사용’에 체크한다
  4. 원하는 폰트(예: Noto Sans Mono CJK JP)를 선택한다
  5. 설정을 저장하고 터미널을 재시작한다

설정 반영 및 확인

폰트 설정이 올바르게 적용되었는지 확인하려면 다음 방법을 시도해 보세요。
  1. fc-list 명령으로 설치된 폰트를 확인한다
fc-list | grep "Noto"
  1. 터미널에서 일본어 표시를 확인한다
echo "안녕하세요, Ubuntu의 문자 깨짐 대책"
  1. GUI 앱(Firefox, LibreOffice 등)에서 일본어가 올바르게 표시되는지 확인한다

5. 문자 코드 확인 및 변환

문자 코드는 무엇인가?

문자 코드는 문자를 디지털 데이터로 다루기 위한 규칙입니다. 대표적인 문자 코드에는 다음과 같은 것들이 있습니다.
문자 코드특징주요 용도
UTF-8다국어 지원, Linux 표준Ubuntu 및 웹 개발
Shift_JIS일본어 특화, Windows 주류Windows 앱, 구형 시스템
EUC-JPUNIX 계열에서 사용됨오래된 Linux 시스템
ISO-2022-JP메일 및 일부 환경에서 사용메일 송수신
Ubuntu에서는 UTF-8이 표준으로 사용되기 때문에, 다른 문자 코드로 저장된 파일을 열면 문자 깨짐이 발생할 수 있습니다.

파일의 문자 코드를 확인하는 방법

1. file 명령을 사용한다

file -i sample.txt
출력 예시:
sample.txt: text/plain; charset=iso-8859-1

2. nkf 명령을 사용한다

sudo apt install -y nkf
nkf --guess sample.txt
출력 예시:
Shift_JIS (CRLF)

문자 코드 변환 방법

1. iconv 명령을 사용한다

Shift_JIS → UTF-8 변환 예시:
iconv -f SHIFT_JIS -t UTF-8 sample.txt -o sample_utf8.txt
EUC-JP → UTF-8 변환 예시:
iconv -f EUU-JP -t UTF-8 sample.txt -o sample_utf8.txt

2. nkf 명령을 사용한다

Shift_JIS → UTF-8 변환 예시:
nkf -w sample.txt > sample_utf8.txt
EUC-JP → UTF-8 변환 예시:
nkf -w --overwrite sample.txt

터미널 및 에디터에서의 문자 깨짐 대책

1. less 명령을 사용해 올바르게 표시한다

export LESSCHARSET=utf-8
less sample.txt

2. vim으로 문자 코드를 지정해 연다

vim -c "set encoding=utf-8" sample.txt

3. geditVSCode에서 문자 코드를 변경한다

  • gedit(GNOME 표준 에디터)
  1. gedit sample.txt 로 파일을 연다
  2. ‘다른 이름으로 저장’ 시 ‘인코딩’을 UTF-8 로 변경한다
  • VSCode(Visual Studio Code)
  1. 화면 하단의 ‘인코딩’을 클릭한다
  2. UTF-8 로 변환한다

6. 터미널 및 에디터 설정 확인

터미널 설정 확인 및 수정

1. 터미널 인코딩 설정 확인

현재 환경 변수를 확인하려면 다음 명령을 실행합니다.
echo $LANG
echo $LC_ALL
출력 예시(올바르게 설정된 경우)
ja_JP.UTF-8
ja_JP.UTF-8
만약 C 나 POSIX 등이 되어 있는 경우는, 적절한 로케일 (ko_JP.UTF-8)로 변경할 필요가 있습니다. (일본의 경우)

2. 터미널 폰트 설정

GNOME Terminal(기본 터미널)
  1. 터미널을 연다
  2. 메뉴의 「설정」을 연다
  3. 「프로파일 편집」 → 「텍스트」탭을 연다
  4. 「커스텀 폰트 사용」을 활성화하고, 아래 중 하나를 선택한다
  • Noto Sans Mono CJK JP
  • VL
  • Takao
  1. 설정을 저장하고 터미널을 재시작한다

텍스트 에디터 문자 인코딩 설정

1. Vim의 문자 인코딩 설정

현재 설정을 확인하려면 Vim을 열고 아래 명령을 실행합니다.
:set encoding?
:set fileencoding?
출력 예시:
encoding=utf-8
fileencoding=utf-8
utf-8가 아닌 경우, Vim 설정 파일(~/.vimrc)에 아래를 추가하여 기본값을 UTF-8로 변경합니다.
set encoding=utf-8
set fileencodings=utf-8,sjis,euc-jp
set fileformats=unix,dos,mac

2. Nano의 문자 인코딩 설정

기본 설정을 변경하려면 설정 파일(~/.nanorc)에 아래를 추가합니다.
set encoding "utf-8"

3. VSCode(Visual Studio Code)의 문자 인코딩 설정

  1. 에디터 화면 오른쪽 아래에 있는 「인코딩」을 클릭한다
  2. 「인코딩 변경」에서 UTF-8을 선택한다
  3. 필요에 따라 「인코딩 포함 저장」을 실행한다
또한, 기본 설정을 UTF-8로 하려면, 설정 파일(settings.json)에 아래를 추가한다.
"files.encoding": "utf8"

7. 사례별 대처법

GUI 애플리케이션에서의 문자 깨짐 대책

1. Firefox와 Chrome에서 일본어 표시가 깨지는 경우

해결책:
  1. 필요한 폰트를 설치한다
sudo apt install -y fonts-noto-cjk fonts-ipafont
  1. 브라우저의 폰트 설정을 확인한다
  • Firefox:
    1. about:preferences에 접근하고, “폰트와 색상” → “고급 설정”을 연다
    2. “비례 폰트”와 “고정폭 폰트”를 Noto Sans CJK JP로 변경한다
  • Chrome:
    1. chrome://settings/fonts에 접근한다
    2. “표준 폰트”와 “고정폭 폰트”를 Noto Sans CJK JP로 변경한다

2. LibreOffice에서의 일본어 문자 깨짐

해결책:
  1. fonts-noto-cjkfonts-ipafont를 설치한다
  2. LibreOffice 설정을 변경한다
  • “도구” → “옵션” → “LibreOffice” → “폰트”
  • “표준 폰트”를 Noto Sans CJK JP로 변경한다

CUI 환경에서의 문자 깨짐 대책

1. SSH 연결 시 문자 깨짐

해결책:
  1. 서버 측에서 locale을 확인하고, ja_JP.UTF-8인지 체크한다
locale
  1. ja_JP.UTF-8가 아닌 경우, 아래를 실행한다
sudo apt install -y language-pack-ja
sudo locale-gen ja_JP.UTF-8
sudo update-locale LANG=ja_JP.UTF-8

특정 애플리케이션에서의 문자 깨짐 대책

1. WSL(Windows Subsystem for Linux)에서의 문자 깨짐

해결책:
  1. WSL의 로케일을 ja_JP.UTF-8로 설정한다
echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=ja_JP.UTF-8' >> ~/.bashrc
source ~/.bashrc
  1. Windows 터미널의 폰트를 Noto Sans Mono CJK JP로 변경한다

2. Docker 컨테이너 내의 문자 깨짐

해결책:
  1. Docker 컨테이너에 들어가 로케일을 확인한다
docker exec -it container_name bash
locale
  1. 일본어 로케일을 추가한다
apt update && apt install -y locales
locale-gen ja_JP.UTF-8
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8

8. FAQ(자주 묻는 질문)

Q1. 로케일을 설정했는데도 문자 깨짐이 해결되지 않습니다.

A: 로케일을 적절히 설정해도 문자 깨짐이 해결되지 않을 경우, 아래를 확인하십시오。
locale
LANG=ja_JP.UTF-8가 아니면, 재설정이 필요합니다。
sudo update-locale LANG=ja_JP.UTF-8
sudo locale-gen ja_JP.UTF-8
sudo dpkg-reconfigure locales

Q2. 특정 파일만 문자 깨짐이 발생합니다.

A: 파일마다 문자 인코딩이 다를 가능성이 있습니다. 아래 방법으로 문자 인코딩을 확인하십시오。
file -i sample.txt
만약 UTF-8이 아니면, 변환이 필요합니다。
iconv -f SHIFT_JIS -t UTF-8 sample.txt -o sample_utf8.txt
또는, nkf를 사용할 경우:
nkf -w --overwrite sample.txt

Q3. 터미널에서 일본어 입력이 안 됩니다.

A: 일본어 입력 메소드(Fcitx나 IBus)가 설치되어 있는지 확인하십시오。
sudo apt update
sudo apt install -y fcitx-mozc
im-config -n fcitx

Q4. WSL(Windows Subsystem for Linux)에서 일본어가 문자 깨짐이 발생합니다。

A: WSL의 로케일을 ja_JP.UTF-8로 설정합니다。
echo 'export LANG=ja_JP.UTF-8' >> ~/.bashrc
echo 'export LC_ALL=ja_JP.UTF-8' >> ~/.bashrc
source ~/.bashrc

Q5. Docker 컨테이너 내에서 일본어가 문자 깨짐이 발생합니다。

A: Docker 컨테이너의 로케일이 C.UTF-8이면 일본어가 올바르게 표시되지 않습니다。
apt update && apt install -y locales
locale-gen ja_JP.UTF-8
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8

Q6. Ubuntu GUI 앱에서 메뉴와 대화 상자가 문자 깨짐이 발생합니다。

A: fonts-noto-cjk를 설치하고, 폰트 설정을 변경합니다。
sudo apt install -y fonts-noto-cjk fonts-ipafont

9. 요약

본 기사에서는 Ubuntu에서 발생하는 문자 깨짐 문제에 대해 원인과 해결 방법을 자세히 설명했습니다. 문자 깨짐은 로케일 설정 오류, 폰트 미설치, 문자 인코딩 불일치 등이 원인으로 발생하지만, 적절히 설정하면 방지할 수 있습니다.

1. 문자 깨짐의 주요 원인

  • 로케일 설정 오류:Ubuntu의 기본 언어가 C 또는 POSIX인 경우 일본어가 올바르게 표시되지 않음
  • 폰트 미설정:일본어 폰트가 설치되지 않으면 GUI 및 터미널에서 문자 깨짐이 발생
  • 문자 인코딩 불일치:다른 문자 인코딩(예: Shift_JIS) 파일을 열면 문자 깨짐이 발생
  • 터미널 및 에디터 설정 오류:UTF-8로 설정되지 않으면 올바르게 표시되지 않음

2. 문자 깨짐을 해결하는 방법

항목해결 방법
로케일 설정locale 명령으로 확인하고, update-locale LANG=ja_JP.UTF-8 를 실행
폰트 설치sudo apt install -y fonts-noto-cjk fonts-ipafont
문자 인코딩 확인file -inkf --guess로 파일의 문자 인코딩을 확인
문자 인코딩 변환iconv -f SHIFT_JIS -t UTF-8 파일명 -o 변환후 파일명
터미널 설정LESSCHARSET=utf-8를 설정하고, 폰트를 Noto Sans Mono CJK JP로 변경
GUI 문자 깨짐폰트를 Noto Sans CJK JP로 설정하고, 필요에 따라 gnome-tweaks를 사용
WSL 문자 깨짐LANG=ja_JP.UTF-8를 설정하고, 폰트를 변경
Docker 문자 깨짐locale-gen ja_JP.UTF-8를 실행하고, Dockerfile에서 로케일을 설정

3. 추가 대책

  • 정기적으로 시스템 업데이트:Ubuntu 패키지가 오래되면 일본어 환경에 영향을 줄 수 있음
sudo apt update && sudo apt upgrade -y
  • 설정 영구화:변경을 ~/.bashrc~/.profile에 추가하면 로그인 시 적용
  • 백업을 수행/etc/default/locale 등 설정 파일을 변경하기 전에 백업

요약

Ubuntu에서 발생하는 문자 깨짐 문제는,로케일·폰트·문자코드·터미널 설정의 4가지 요소를 적절히 설정함으로써 해결할 수 있습니다. 본 기사에서 소개한 방법을 적용하면 대부분의 환경에서 문자 깨짐을 방지할 수 있을 것입니다.
侍エンジニア塾